fooの呼び出し文があるとします。私はレジスタEBXでのリターンアドレスを持っているx86関数呼び出し中にjmpアドレスを見つける方法は?
push ip + 6
jmp <addr of foo>
- だから、アセンブラは、呼び出し文に遭遇したとき、それがにそれを分解します。今私は "fooのaddr"を見つけたいと思っています。どうすればいいのですか? 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
-------
プッシュとjmpのオペコードは何ですか?
'call'は、プロセッサーによって実行される命令です。アセンブラは変換しません。あなたは 'プッシュ'と 'jmp'と同等であると考えることができますが、それらは同じものではありません。 – wj32
@ wj32:呼び出しがプロセッサによって実行された場合はokです。どのようにジャンプ先の住所を取得するのですか? – Bruce
@ wj32:呼び出し文のメモリマップは何ですか? – Bruce