文件来源 :http://files.cnblogs.com/remlostime/bomb.zip
Ubuntu
gdb调试工具
首先用IDA打开,找到main函数,通过main函数的解析,可知大体流程为:
①初始化炸弹
②读取参数后进行判断是否为正确参数,否则引爆炸弹
③一共需要6次判断,即输入6次参数,每一次的判断都有特定的判断方式

①phase_1
首先来进行第一次的判断,运行该二进制文件后,出现以下提示

可以先输入任意字符测试一下,例如

炸弹引爆,程序结束,下面开始正式分析。
经过IDA分析,可以得到第一步思路,在phase_1这个函数上下断,因为执行完该函数,就出现了第一次判断结果

输入任意字符后,发现在phase_1处断下,disass观察该处反汇编

标红区域为重点分析区域
首先,该函数push了两个参数,第一个是位于0x8049678地址的字符,第二个[ebp+0x8],学过C语言汇编的明白,这是第一个参数所在的地址
接着该函数又call一个函数,即<strings_not_equal>,可以判断这是一个比较函数,如果这两个字符串相等,则eax置零,成功实现跳转,跳到下一个判断函数,否则调用<explode_bomb>,引爆炸弹,程序结束。
于是,关键任务就是找出,0x8049678该处地址所存储的内容是什么,这一点,用IDA进行解决

IDA已经给出答案,即0x8049678处所存的内容为The future will be better tomorrow.
输入程序中进行验证,得到正确结果,进入下一关

==============================================================================
原文:https://www.cnblogs.com/Virus-Faker/p/12492225.html