我需要调试用C编写的应用程序,该应用程序读取和写入段寄存器FS。要调试此应用程序,我需要查看FS指向的内存地址。
应用程序使用如下代码:
mov rdx, fs:[rcx]
mov fs:[rcx], rsi
如何从/到段寄存器获取读/写的线性虚拟地址?我可以为Linux或Winodws编译这个应用程序。
答案 0 :(得分:4)
在Linux上,您可以使用arch_prctl(ARCH_GET_FS, &fsbase)
。在Windows中,如果FS
像往常一样指向TEB,则可以阅读fs:[0x18]
以获取基址,或者使用调试器的功能(如果可用)。