如何解码此指令"call*fs:0x334"以了解确切的函数地址?

fly*_*bin 1 x86 assembly x86-64 linux-kernel

在运行期间,如何获取寄存器fs中的值并在"call*fs:0x334"中计算目标函数的地址?我可以使用什么样的x86组件?

Mat*_*ery 5

目标函数地址in call *fs:0x334是存储在的值fs:0x334.

所以,如果你想知道那个地址是什么,你可以加载它.

例如mov rax, [fs:0x334](nasm)或mov %fs:0x334, %rax(气体).

你不需要知道fs它本身指向什么(它也是如此:它指向描述符表中的一个条目,你可能有或没有权限读取,它指向一个线性地址,可能或可能不能通过任何其他段选择器访问).

在x86-64 Linux上,内核和glibc合作确保fs始终指向当前运行的线程的线程本地存储区域.(在32位x86 Linux上,gs用于此目的.)