CSAPP二:BombLab-六

一、phase_1

进入(cd /home/w/桌面/bomb)调试模式(gdb -q bomb)之后,首先输入"disas phase_1"查看phase_1函数的汇编代码
1.1
根据汇编代码可以推出,%eax用于保存的是输入的字符串,地址0x402400处存放的是用于比较的字符串(即我们应该输入的正确字符串)
输入"x/s 0x402400"查看此处的信息,得到字符串
1.2
输入"run"运行该程序,输入字符串测试是否成功拆弹?!
1.3

二、phase_2

disas phase_2

   0x0000000000400efc <+0>:	push   %rbp
   0x0000000000400efd <+1>:	push   %rbx
   0x0000000000400efe <+2>:	sub    $0x28,%rsp
   0x0000000000400f02 <+6>:	mov    %rsp,%rsi
   0x0000000000400f05 <+9>:	callq  0x40145c <read_six_numbers>
   0x0000000000400f0a <+14>:	cmpl   $0x1,(%rsp)
   0x0000000000400f0e <+18>:	je     0x400f30 <phase_2+52>
   0x0000000000400f10 <+20>:	callq  0x40143a <explode_bomb>
   0x0000000000400f15 <+25>:	jmp    0x400f30 <phase_2+52>
   0x0000000000400f17 <+27>:	mov    -0x4(%rbx),%eax
   0x0000000000400f1a <+30>:	add    %eax,%eax
   0x0000000000400f1c <+32>:	cmp    %eax,(%rbx)
   0x0000000000400f1e <+34>:	je     0x400f25 <phase_2+41>
   0x0000000000400f20 <+36>:	callq  0x40143a <explode_bomb>
   0x0000000000400f25 <+41>:	add    $0x4,%rbx
   0x0000000000400f29 <+45>:	cmp    %rbp,%rbx
   0x0000000000400f2c <+48>:	jne    0x400f17 <phase_2+27>
   0x0000000000400f2e <+50>:	jmp    0x400f3c <phase_2+64>
   0x0000000000400f30 <+52>:	lea    0x4(%rsp),%rbx
   0x0000000000400f35 <+57>:	lea    0x18(%rsp),%rbp
   0x0000000000400f3a <+62>:	jmp    0x400f17 <phase_2+27>
   0x0000000000400f3c <+64>:	add    $0x28,%rsp

根据第6行中的" cmpl $0x1,(%rsp) " 以及转移地址"je 0x400f30 <phase_2+52>“得到地址为%rsp+0x1中的值为0x1;根据第17行中的"jne 0x400f17 <phase_2+27>“得到程序进入了一个循环,循环终止的条件是第16行”%rbp=%rbx”,在循环中进行的是第11行%eax+=%eax后再将值保存到相应的地址单元中
2.1
2.2

三、phase_3

3.1
3.2
通关后答案写在da.txt中每行一关答案,run da.txt

四、phase_4

4.1
4.2

五、phase_5

5.1
5.2

六、phase_6

6.1
6.2
隐藏炸弹“run da.txt”

Border relations with Canada have never been better.
1 2 4 8 16 32
1 311
0 0 DrEvil
IONEFG
4 3 2 1 6 5
22
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值