Assembly 如何解码此指令;调用*fs:0x334";要知道确切的函数地址?
在运行时,如何获取寄存器fs中的值并在“call*fs:0x334”中计算目标函数的地址?我可以使用哪种x86程序集?调用*fs:0x334中的目标函数地址是存储在Assembly 如何解码此指令;调用*fs:0x334";要知道确切的函数地址?,assembly,linux-kernel,x86,x86-64,Assembly,Linux Kernel,X86,X86 64,在运行时,如何获取寄存器fs中的值并在“call*fs:0x334”中计算目标函数的地址?我可以使用哪种x86程序集?调用*fs:0x334中的目标函数地址是存储在fs:0x334中的值 所以,如果你想知道那个地址是什么,你可以直接加载它 e、 g.mov-rax,[fs:0x334](nasm)或mov%fs:0x334,%rax(气体) 您不需要知道fs本身指向什么(也可以是:它指向描述符表中的一个条目,您可能有读权限,也可能没有读权限,它指向一个线性地址,通过任何其他段选择器都可以或不可以
fs:0x334
中的值
所以,如果你想知道那个地址是什么,你可以直接加载它
e、 g.mov-rax,[fs:0x334]
(nasm)或mov%fs:0x334,%rax
(气体)
您不需要知道fs
本身指向什么(也可以是:它指向描述符表中的一个条目,您可能有读权限,也可能没有读权限,它指向一个线性地址,通过任何其他段选择器都可以或不可以访问)
在x86-64 Linux上,内核和glibc合作确保
fs
始终指向当前运行线程的线程本地存储区域。(在32位x86 Linux上,gs
用于此目的。)调用*fs:0x334中的目标函数地址是存储在fs:0x334
中的值
所以,如果你想知道那个地址是什么,你可以直接加载它
e、 g.mov-rax,[fs:0x334]
(nasm)或mov%fs:0x334,%rax
(气体)
您不需要知道fs
本身指向什么(也可以是:它指向描述符表中的一个条目,您可能有读权限,也可能没有读权限,它指向一个线性地址,通过任何其他段选择器都可以或不可以访问)
在x86-64 Linux上,内核和glibc合作确保fs
始终指向当前运行线程的线程本地存储区域。(在32位x86 Linux上,gs
用于此目的。)通常选择器(如fs
)有一个值,后面的部分是该值的偏移量。通常选择器(如fs
)有一个值,后面的部分是该值的偏移量。