二进制拆炸弹bomb实验第一弹

本文详细介绍了在Linux环境下进行著名的bomb拆弹实验的过程。通过使用gdb工具反汇编代码,分析六个关卡的入口函数,找出使程序跳转到'explode_bomb'的条件。在phase_1的分析中,发现需要输入特定字符串'We have to stand with our North Korean allies.'以通过第一关。实验强调了逆向思维和gdb调试在理解复杂汇编代码中的关键作用。
摘要由CSDN通过智能技术生成

著名的bomb拆炸弹实验:

程序运行在linux环境中。程序运行中有6个关卡(6个phase),每个phase需要用户在终端上输入特定的字符或者数字才能通关,否则会引爆炸弹!那么如何才能知道输入什么内容呢?这需要你使用gdb工具反汇编出汇编代码,结合c语言文件找到每个关卡的入口函数。然后分析汇编代码,找到在每个phase程序段中,引导程序跳转到“explode_bomb”程序段的地方,并分析其成功跳转的条件,以此为突破口寻找应该在命令行输入何种字符通关。

实验过程很艰辛,三言两语道不尽呐!好吧,那就一关一关来拆。看到两千行汇编代码头都晕啊!!!

首先,bomb.c中的c代码好抽象,根本得不到什么信息,只看到有六个phase的函数。根据提示,要将抽象的c代码反汇编,我先打开了我的Ubuntu,我把整个LAB3文件放在fsj文件下,进入终端,输入objdump -d bomb > fsj.txt将汇编代码输出到与bomb同目录的一个自动生成的叫fsj.txt的文件中。这样就可以看到fsj.txt中有约两千行汇编代码,总的浏览一下,大概的意思是将一个一个的函数分开,明显可以看到六个phase函数。

Bomb第一弹正式开始。分析一下代码吧!

08048f61 <phase_1>://We have to stand with our North Korean allies.

 8048f61:  55                      push   %ebp</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值