#南京航空航天大学《计算机组成原理Ⅱ课程设计》报告
- 姓名:xx
- 班级:1617
- 学号:1617
- 报告阶段:Bomblab
- 完成日期:2019.5.26
##目录
实验内容
objdump –d bomb > asm.txt
对bomb进行反汇编并将汇编代码输出到asm.txt中。
1.Bomb1
思路:
查看汇编源代码asm.txt文件,在main函数中找到如下语句
这里为phase1函数在main()函数中被调用的位置):
08048b30 <phase_1>:
8048b30: 55 push %ebp
8048b31: 89 e5 mov %esp,%ebp
8048b33: 83 ec 10 sub $0x10,%esp
8048b36: 68 84 a0 04 08 push $0x804a0
8048b3b: ff 75 08 pushl 0x8(%ebp)
8048b3e: e8 bf 04 00 00 call 8049002 <strings_not_equal>
8048b43: 83 c4 10 add $0x10,%esp
8048b46: 85 c0 test %eax,%eax
8048b48: 74 05 je 8048b4f <phase_1+0x1f>
8048b4a: e8 b6 05 00 00 call 8049105 <explode_bomb>
8048b4f: c9 leave
8048b50: c3 ret
在这里我们可以看到,call 8049002 <strings_not_equal>
的前两句是进行压栈操作,根据sub $0x10,%esp
可知前期准备工作中给栈分配了足够的空间,进行压栈时的情况为压入双字,根据小端存储的方式可知栈中存储的地址为08 a0 04 08
。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AveR9Ejj-1584672291157)(C:\Users\Lenovo\Desktop\pa实验报告\bomb37\新建文件夹\1.PNG)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-utDSRexN-1584672291159)(C:\Users\Lenovo\Desktop\pa实验报告\bomb37\新建文件夹\2.PNG)]
2.Bomb2
思路:
查看汇编源代码asm.txt文件,在main函数中找到如下语句
这里为phase2函数在main()函数中被调用的位置):
08048b51 <phase_2>:
8048b51: 55 push %ebp
8048b52: 89 e5 mov %esp,%ebp
8048b54: 56 push %esi
8048b55: 53 push %ebx
8048b56: 83 ec 28 sub $0x28,%esp
8048b59: 65 a1 14 00 00 00 mov %gs:0x14,%eax
8048b5f: 89 45 f4 mov %eax,-0xc(%ebp)
8048b62: 31 c0 xor %eax,%eax
8048b64: 8d 45 dc lea -0x24(%ebp),%eax
8048b67: 50 push %eax
8048b68: ff 75 08 pushl 0x8(%ebp)
8048b6b: e8 bd 05 00 00 call 804912d <read_six_numbers>
8048b70: 83 c4 10 add $0x10,%esp
8048b73: 83 7d dc 02 cmpl $0x2,-0x24(%ebp)
8048b77: 75 06 jne 8048b7f <phase_2+0x2e>
8048b79: 83 7d e0 03 cmpl $0x3,-0x20(%ebp)
8048b7d: 74 05 je 8048b84 <phase_2+0x33>
8048b7f: e8 81 05 00 00 call 8049105 <explode_bomb>
8048b84: 8d 5d dc lea -0x24(%ebp),%ebx
8048b87: be 02 00 00 00 mov $0x2,%esi
8048b8c: 89 f0 mov %esi,%eax
8048b8e: 0f af 03 imul (%ebx),%eax
8048b91: 03 43 04 add 0x4(%ebx),%eax
8048b94: 39 43 08 cmp %eax,0x8(%ebx)
8048b97: 74 05 je 8048b9e <phase_2+0