Как проверить значение EIP на языке ассемблера?
Я хочу получить текущее значение регистра EIP на языке ассемблера. Это возможно?
3 ответа
Решение
Предполагая 32-битный x86, используйте следующую функцию:
get_eip: mov eax, [esp]
ret
Затем, чтобы получить значение EIP в EAX, просто:
call get_eip
На x86-64 (в отличие от 32-битной x86), есть RIP
-относительная адресация (RIP
является 64-битным аналогом EIP
). Так что в 64-битном коде вы можете просто сделать
lea rax, [rip]
переместить текущее содержимое RIP
в RAX
(ты можешь использовать lea
но нет mov
за это).