上学期期末的时候,老师布置了一个大作业,拆二进制炸弹。
开始拿到大作业时,很慌,迟迟不敢打开炸弹,因为一输错就炸了。到了截至日期的前2个星期,才开始,当时老师很早就给我们了,但是,比较怂,不敢拆。
网上有很多详解,老师上课时也给我们提过,hai,反汇编不扎实,看懂一段需要花很长时间,然后…就不想看。但是,没办法,大作业会计入成绩啊,就硬着头皮打开了。
但是,你千万不要怕,打开虚拟机,gdb就是了
(武藏)既然你诚心诚意的发问了,
(小次郎)我们就大发慈悲的告诉你!
(武藏)为了防止世界被破坏,
(小次郎)为了守护世界的和平;
(武藏)贯彻爱与真实的邪恶,
(小次郎)可爱又迷人的反派角色~~
(武藏)武藏!
(小次郎)小次郎!
(合)我们是穿梭在银河的火箭队!白洞,白色的明天在等着我们!!
(喵喵)就是这样喵~~~
(阿伯怪)Sonansi~~
它总共有七关,第七关是隐藏关,我们每个人拿到的炸弹是不一样的,但每关的知识点是一样的,接下来,一起去看看吧
第一步
反编译bomb,得到.txt.文件,建议复制出来保存到电脑,课件无聊的时候可以看看,哈哈哈哈
tip
小伙伴们,一定要回gdb设断点哦,这样在自己有答案,但不确定的时候可以试一下,断点设置正确了,答案错了也不会boom哦
第一关
比较简单,和网上的一些参考差不多,是关于字符串的,根据参考的步骤,很容易就解出来了,我看的参考第一关基本都是字符串的
首先 gdb bomb,然后disas phase_1 得到第一关反汇编代码
当然你可以看你拷贝出来的,但是你下面要对某处进行调试,所以这里disas比较好
从0x08048eda中,得比较你输入的字符串和程序中预先设定的字符串是否相同,推测这个字符串语句movl $0x0804a210,通过gdb查看地址为0x0804a210的内容,运行测试答案是否正确,
相信你在看到这篇的时候已经看过其他很多优秀的资料了,所以从第一关开始,你要注意 $ 开头的语句,这些语句可是拆弹的密钥哦
bingo!
第二关
拆每一关前,都要进行的步骤:
首先 gdb bomb,然后disas phase_几(第几关)