我想用汇编语言获取EIP寄存器的当前值。这可能吗?
答案 0 :(得分:56)
假设32位x86,请使用以下函数:
get_eip: mov eax, [esp]
ret
然后,要在EAX中获取EIP的值,只需:
call get_eip
答案 1 :(得分:26)
在x86-64(而不是32位x86)上,有RIP
- 相对寻址(RIP
是EIP
的64位模拟。所以在64位代码中,你可以做到
lea rax, [rip]
将RIP
的当前内容移至RAX
(您可以使用lea
但不能使用mov
。
答案 2 :(得分:10)
call foo
foo:
pop eax ; address of foo