使用段寄存器 FS 进行调试
Debugging with segment register FS
我需要调试一个用 C 编写的应用程序,该应用程序读取和写入段寄存器 FS。要调试此应用程序,我需要查看 FS 指向的内存地址。
应用程序使用这样的代码:
mov rdx, fs:[rcx]
mov fs:[rcx], rsi
如何获取 read/write from/to 段寄存器的线性虚拟地址?我可以为 Linux 或 Winodws 编译此应用程序。
在 linux 上,您可以使用 arch_prctl(ARCH_GET_FS, &fsbase)
。在 windows 中,如果 FS
像往常一样指向 TEB,您可以阅读 fs:[0x18]
以获取基地址,或者使用调试器的功能(如果可用)。
我需要调试一个用 C 编写的应用程序,该应用程序读取和写入段寄存器 FS。要调试此应用程序,我需要查看 FS 指向的内存地址。
应用程序使用这样的代码:
mov rdx, fs:[rcx]
mov fs:[rcx], rsi
如何获取 read/write from/to 段寄存器的线性虚拟地址?我可以为 Linux 或 Winodws 编译此应用程序。
在 linux 上,您可以使用 arch_prctl(ARCH_GET_FS, &fsbase)
。在 windows 中,如果 FS
像往常一样指向 TEB,您可以阅读 fs:[0x18]
以获取基地址,或者使用调试器的功能(如果可用)。