我与C和汇编代码初学者,我们有一个“炸弹”分配(用C语言编写),其中要求方法需要某些密码,但代码不可见,我需要通过查看汇编代码来确定正确的密码。
该代码指示此方法的密码是6个数字,它作为“输入”传递给方法puzzle_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
了解程序集的技巧就是学习它。 – alex
并学习如何使用调试器... –
如果问题已关闭,再次提出问题并不礼貌。社区已经告诉你在这个问题上多加一些努力。 – alex