计算机系统基础二进制炸弹实验报告,西北工业大学_计算机系统基础_实验报告_第2次...

这篇博客详细记录了对二进制炸弹程序的分析过程,特别是第一阶段的字符串比较。通过objdump反汇编,发现phase_1函数中,用户输入的字符串保存在0x1c(%esp)处,而比较字符串的地址为0x804a07c。通过GDB查看0x804a07c的值,进一步理解函数的工作原理。博客探讨了如何通过比较这两个字符串来解密二进制炸弹的这一阶段。
摘要由CSDN通过智能技术生成

西北工业大学数据库实验报告

计算机系统基础实验课第二次实验报告

对二进制炸弹求解过程的详细描述

首先使用objdump命令对bomb程序进行反汇编,并将汇编代码输出到asm.txt中。

1-309-png_6_0_0_0_0_0_0_892.979_1262.879-893-0-0-893.jpg

阶段一、字符串比较

打开asm.txt文件,搜索到phase_1函数,可以看到以下代码。

08048b33 :

8048b33: 83 ec 14 sub $0x14,%esp

8048b36: 68 7c a0 04 08 push $0x804a07c

8048b3b: ff 74 24 1c pushl 0x1c(%esp)

8048b3f: e8 3e 05 00 00 call 8049082

8048b44: 83 c4 10 add $0x10,%esp

8048b47: 85 c0 test %eax,%eax

8048b49: 74 05 je 8048b50

8048b4b: e8 29 06 00 00 call 8049179

8048b50: 83 c4 0c add $0xc,%esp

8048b53: c3 ret

可以看出,用户输入字串指针保存在0x1c(%esp),然后调用,待返回后,测试返回值,若equal则进入下一phase,否则,从可知该函数用于比较两函数的值,因此需要两个字串作为输入,上面代码中,pushl 0x1c(%esp)用于传递用户字串指针,则push $0x804a07c自然是传递比较字串的指针了。打开gdb,x/s 0x80497c0, 可以直接查看到该指针指向的子符串:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值