可能重复:
解码和理解汇编代码
我是 c 和汇编代码的初学者,我们有一个“炸弹”作业(用 c 编写)调用需要某些密码的方法,但代码不可见,我需要通过查看汇编代码来确定正确的密码.
代码表明此方法的密码是 6 个数字,作为“输入”传递给方法uzzle_1(我试图避免触发)。
我无法理解汇编代码。
这个问题的答案是什么?
我认为这个puzzle_1 的关键字是数组。
08048db4 <puzzle_1>:
8048db4: push %ebp
8048db5: mov %esp,%ebp
8048db7: sub $0x38,%esp
8048dba: lea -0x24(%ebp),%eax
8048dbd: mov %eax,0x4(%esp)
8048dc1: mov 0x8(%ebp),%eax
8048dc4: mov %eax,(%esp)
8048dc7: call 804897e <read_six_numbers>
8048dcc: movl $0x1,-0xc(%ebp)
8048dd3: jmp 8048df9 <puzzle_1+0x45>
8048dd5: mov -0xc(%ebp),%eax
8048dd8: mov -0x24(%ebp,%eax,4),%eax
8048ddc: mov -0xc(%ebp),%edx
8048ddf: sub $0x1,%edx
8048de2: mov -0x24(%ebp,%edx,4),%edx
8048de6: add $0xbf,%edx
8048dec: cmp %edx,%eax
8048dee: je 8048df5 <puzzle_1+0x41>
8048df0: call 8048d93 <denied_nextstep>
8048df5: addl $0x1,-0xc(%ebp)
8048df9: cmpl $0x5,-0xc(%ebp)
8048dfd: jle 8048dd5 <puzzle_1+0x21>
8048dff: call 8048d73 <allow_nextstep>
8048e04: leave
8048e05: ret