打开IDA,反汇编bomb.exe。可以看到如图 看到汇编代码,这里有一句string 内容是”Public speaking is very easy.”,然后将它放在ESP+4的位置,再将输入数据放在ESP的位置,调用_strings_not_equal方法,所以我们可以确定要输入的字符串是Public speaking is very easy.Phase 1解决。 Phase 2 打开IDA,选择phase2 的函数...
为了完成二进制炸弹拆除任务,你需要使用gdb调试器和objdump来反汇编炸弹的可执行文件,并单步跟踪调试每一阶段的机器代码,从中理解每一汇编语言代码的行为或作用,进而设法“推断”出拆除炸弹所需的目标字符串。这可能需要你在每一阶段的开始代码前和引爆炸弹的函数前设置断点,以便于调试。
如果你比较细心的话,会发现在 phase_6 代码后面有个fun7函数,我们记得 phase_4 阶段调用过func4函数,所以这似乎是在强烈暗示我们暗雷会调用func7 这样找 fun7 实在是太麻烦了,能不能把整个可执行文件反汇编成汇编语言文件,然后用 VS Code 等编辑器阅读? 当然可以,使用命令objdump -d bomb >> bomb.s(如果没...
在无法获得源程序的情况下,只能通过对可执行程序进行反汇编来获得程序的汇编代 码。观察 bomb.s 对应的汇编代码,分析源程序的功能。 (有些只需要输入 %d %d 俩个整数) 结合源代码可以发现,程序内部对将要输入的第一个数字的要求是减去 45 后的值小于 7,第二个输入应该根据第一个输入的整数的值来判断程序转到...