Подтвердить что ты не робот

Как проверить значение EIP на ассемблере?

Я хочу получить текущее значение регистра EIP с ассемблером. Возможно ли это?

4b9b3361

Ответ 1

Предполагая 32-разрядную x86, используйте следующую функцию:

get_eip: mov eax, [esp]
         ret

Затем, чтобы получить значение EIP в EAX, просто:

call get_eip

Ответ 2

В x86-64 (в отличие от 32-разрядного x86), там RIP -отрицательная адресация (RIP - это 64-разрядный аналог EIP). Итак, в 64-битном коде вы можете просто сделать

lea rax, [rip]

чтобы переместить текущее содержимое RIP в RAX (для этого можно использовать lea, но не mov).

Ответ 3

    call foo
foo:
    pop eax ; address of foo