少しの背景です。私はCとアセンブリコードの初心者ですが、特定のパスワードが必要なメソッドを呼び出す "bomb"割り当て(cで書かれています)がありますが、コードは表示されず、アセンブリコードを見て正しいパスワードを判断する必要があります。アセンブリコードの解読と理解
このコードは、このメソッドのパスワードが6番であることを示しています。この番号は、メソッドフェーズ2の「入力」として渡されます(私はトリガーを避けようとしています)。
私が混乱している部分は+64から+42にジャンプしています。それはループのようですが、私はどのようにスタックが各パスの影響を受けているのかわかりません。最後の2つの数字が同じであればループが終了しているように見えますが、それは4を加算したり減算したりすることと関連していますが、アドレスがどのようにトラバースされているかわかりません。 誰かが正確に何が起こっているのかを翻訳することができれば、あるいは私が特定のレジスタ/場所を見る必要がある場合、それは大きな助けになるでしょう。より複雑なものと思われる4つのフェーズがありますので、これらを読むアプローチにどのように良い理解をしたいのですか?
また、誰かが(印刷可能なテーブルのような)アセンブリコードキーワードを持っていれば助かります。また、32ビットと64ビットのレジスタ間に違いがある場合は、ここでレジスタ名..
82 phase_2(input);
(gdb) disas phase_2
Dump of assembler code for function phase_2:
0x000000000040106b <phase_2+0>: push %rbp
0x000000000040106c <phase_2+1>: push %rbx
0x000000000040106d <phase_2+2>: sub $0x28,%rsp
0x0000000000401071 <phase_2+6>: mov %rsp,%rsi
0x0000000000401074 <phase_2+9>: callq 0x401457 <read_six_numbers>
0x0000000000401079 <phase_2+14>: cmpl $0x0,(%rsp)
0x000000000040107d <phase_2+18>: jne 0x401086 <phase_2+27>
0x000000000040107f <phase_2+20>: cmpl $0x1,0x4(%rsp)
0x0000000000401084 <phase_2+25>: je 0x40108b <phase_2+32>
0x0000000000401086 <phase_2+27>: callq 0x401421 <explode_bomb>
0x000000000040108b <phase_2+32>: lea 0x8(%rsp),%rbx
0x0000000000401090 <phase_2+37>: lea 0x18(%rsp),%rbp
0x0000000000401095 <phase_2+42>: mov -0x8(%rbx),%eax
0x0000000000401098 <phase_2+45>: add -0x4(%rbx),%eax
0x000000000040109b <phase_2+48>: cmp %eax,(%rbx)
0x000000000040109d <phase_2+50>: je 0x4010a4 <phase_2+57>
0x000000000040109f <phase_2+52>: callq 0x401421 <explode_bomb>
0x00000000004010a4 <phase_2+57>: add $0x4,%rbx
0x00000000004010a8 <phase_2+61>: cmp %rbp,%rbx
0x00000000004010ab <phase_2+64>: jne 0x401095 <phase_2+42>
0x00000000004010ad <phase_2+66>: add $0x28,%rsp
0x00000000004010b1 <phase_2+70>: pop %rbx
0x00000000004010b2 <phase_2+71>: pop %rbp
0x00000000004010b3 <phase_2+72>: retq
ウィンドウを使用している場合、私はこれをお勧めしたいと思います:http://www.ollydbg.de/ gdbを使って(私はただ知っています)、TUI、http://stackoverflow.com/a/2422063/1149736より: 'layout asm'' start' 'layout regs''ni''ni''ni' :)スタックを慎重にスタックしてください。http://www.chemie.fu-berlin.de/chemnet/use/info/gdb/gdb_7 .html – Vyktor
あなたはかなりクールな先生を持っています:) –