使用段寄存器FS

时间:2015-11-13 07:37:31

标签: c debugging assembly x86 x86-64

我需要调试用C编写的应用程序,该应用程序读取和写入段寄存器FS。要调试此应用程序,我需要查看FS指向的内存地址。

应用程序使用如下代码:

mov rdx, fs:[rcx]
mov fs:[rcx], rsi

如何从/到段寄存器获取读/写的线性虚拟地址?我可以为Linux或Winodws编译这个应用程序。

1 个答案:

答案 0 :(得分:4)

在Linux上,您可以使用arch_prctl(ARCH_GET_FS, &fsbase)。在Windows中,如果FS像往常一样指向TEB,则可以阅读fs:[0x18]以获取基址,或者使用调试器的功能(如果可用)。