逆向工程:bomb破解

Phase_1

 
17084259-078525ba663782ac.png
图片.png

 

使用objdump -d查看汇编代码,打开bomb.s文件后,从main函数开始看,会发现存在好几个以Phase为开头的函数,大概就是对应着我们需要闯关的关卡。首先我们从phase_1开始分析。

 

 

 
17084259-528526ff8e99eaa8.png
图片.png

 

 

这里就是phase_1的代码,我们可以发现80488db位置有一个call explode_bomb,这个应该就是引爆炸弹的位置。那前面的je指令应该就是跳过炸弹爆炸的条件。我们在phase_1处下断点。

 

 

 
17084259-4f1300f191d0086e.png
图片.png


程序停在了80488c0位置,单步执行。

 

 

 
17084259-c48ec61e98f0baab.png
图片.png


执行到这里时,即将调用strings_not_equal函数,可以看到栈顶的两个参数分别为我们随机输入的123和一个字符串。而调用的函数名含义为判断string是否相同(不同),那么猜测就是将我们的输入和内存中的某个字符串进行比较。call之前内存出现了字符串”With great power comes great responsibility.“试一试。

 

 

 
17084259-3db45f69b31cbfb6.png
图片.png

 

 

answer1:With great power comes great responsibility.

 

Phase_2

 
17084259-30015148f810e1c3.png
图片.png

 

首先和phase_1的步骤类似,在phase_2的位置下断点。

 

运行到phase_2时,先查看phase_2的汇编,发现80488f8位置有一个函数叫read_six_numbers,猜测这个炸弹的解法应该是输入合适的6个数字。先随便输入6个试试看:

 

 
17084259-2ddbc5f70936f17d.png
图片.png

 

 

直接运行到read_six_numbers函数,这个时候我们来看一下函数运行前后寄存器的值和内存中的值,理论上来说应该会将我们输入的这6个数 存入内存。

 

 

 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值