如何用汇编语言检查EIP值?

时间:2010-10-31 08:37:40

标签: assembly x86

我想用汇编语言获取EIP寄存器的当前值。这可能吗?

3 个答案:

答案 0 :(得分:56)

假设32位x86,请使用以下函数:

get_eip: mov eax, [esp]
         ret

然后,要在EAX中获取EIP的值,只需:

call get_eip

答案 1 :(得分:26)

在x86-64(而不是32位x86)上,有RIP - 相对寻址(RIPEIP的64位模拟。所以在64位代码中,你可以做到

lea rax, [rip]

RIP的当前内容移至RAX(您可以使用lea但不能使用mov

答案 2 :(得分:10)

    call foo
foo:
    pop eax ; address of foo