これは、gdb でデバッグしているバイナリの 2 行です。これは IA32 用に gcc でコンパイルされた C コードです。
8049345: 8b 45 08 mov 0x8(%ebp),%eax
8049348: 89 04 24 mov %eax,(%esp)
各ステップの後に値が表示されるようにdisplay $eax
設定しました。最初の行の後に、次のように表示されdisplay
ます6: $eax = 134527652
。
x 134527652
表示と x で異なる結果が得られるのx $eax
は0x804baa4 <input_strings+100>: "1 1 1 1 1 1"
なぜですか?
私が信じている次の行は、eax を esp によって保存されたアドレスに移動することを示していますか? display $esp
セットアップがあり、次のように表示されます2: $esp = (void *) 0xffffd540
。
2 番目の動きの前に、私x 0xffffd540
は見ます:0xffffd540: ""
動きの後、私は繰り返して見ます:
0xffffd540: "\244\272\004\bY\233\004\b\210\325\377\377\214\325\377\377\220\325\377\377\224\325\377\377\230\325\377\377\234\325\377\377\001"
この行は eax をこのアドレスに移動しようとしていると思っていましたが、明らかにここで何かを理解していませんか? バイナリから他の行を見たい場合はお知らせください。