CSAPP 实验二 Bomblab

目录

1.phase1

(1)gdb bomb

(2)disas phase_1

(3)x/s 0x402400

(4)输入字符串

2.phase_2

(1)查看phase_2的代码

3.phase_3

4.phase_4

5.phase_5


1.phase1

(1)gdb bomb

(2)disas phase_1

反汇编phase_1函数

1.首先,我们需要输入一个东西,并且这个东西的地址被传入了%rdi中

2.其次,

,该指令将0x402400处的东西给了%esi寄存器

3.调用strings_not_equal函数,该函数第一个参数存于%rdi,第二个参数存于%rsi

通过名字可以知道,如果两参数不同,就返回true,否则返回0,返回值是存放在%rax中

4.如果eax的值不为0,也就是参数不相同,那么就跳转到explode_bomb函数,也就是炸弹爆炸,如果为0,那就是参数相同,就顺利通关了

所以我们需要输入一个字符串,并且该字符串与0x402400处存放的字符串相同

(3)x/s 0x402400

(39条消息) gdb查看内存_itegel的专栏-CSDN博客,关于x指令的详解

(4)输入字符串

先用q指令退出对当前程序的调试,./bomb运行bomb函数,输入上方查询的字符串,完成

2.phase_2

(1)查看phase_2的代码

先gdb 再解汇编

(2)将栈顶地址当做参数参入read_six_numbers,可以猜测是将六个数字压入栈中

观察汇编程序发现,就是一个for循环,每次把元素乘2,所以是1,2,4,8,16,32

3.phase_3

 深入理解计算机系统(CS:APP) - Bomb Lab详解 | viseator's blog

关键就是一个跳转表

4.phase_4

5.phase_5

查看寄存器的内容

 

x/s输出地址处

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值