Предположим, что у нас есть оператор вызова foo. Поэтому, когда ассемблер встречает заявление вызова он разбивает его -Как найти адрес jmp во время вызова функции x86?
push ip + 6
jmp <addr of foo>
У меня есть обратный адрес в регистре EBX. Теперь я хочу узнать «addr foo». Как мне это сделать? Я хочу подтвердить, что оператор push присутствует перед jmp. Будет ли карта памяти выглядеть примерно так?
-------
push (what will be the value stored in this byte?? opcode ??)
-------
jmp (what will be the value stored in this byte?? opcode ??)
-------
jmp byte 1
-------
jmp byte 2
-------
jmp byte 3
-------
jmp byte 4
-------
return address stored in ebx
-------
Каковы операционные коды для push и jmp?
'call' - инструкция, выполняемая процессором. Ассемблер не преобразует его. Вы можете думать, что это эквивалентно «push» и «jmp», но это не одно и то же. – wj32
@ wj32: ok, если вызов выполняется процессором. Как получить адрес места, где он перескакивает? – Bruce
@ wj32: Какова карта памяти оператора вызова? – Bruce