BombLab 解题思路

预备资料

bomb原文件
bomb汇编文件

预备工作

1. 解压

在tar所在目录下打开终端

tar -xvf ./bomb.tar

解压bomb.tar
得到bomb

2. 反编译

反编译 bomb 文件后输出到 bomb.txt

objdump -D bomb > bomb.txt

反编译bomb文件

3. 常用指令

指令功能效果
gdb进入gdb调试器进入gdb调试器
start运行程序到 main 停止运行程序到 main 停止
next执行下一步 (不进入函数内部 )执行下一步 (不进入函数内部 )
si执行下一步执行下一步
layout split显示源码和汇编显示源码和汇编
layout regs显示汇编和寄存器显示汇编和寄存器
fin跳出当前函数跳出当前函数
回车键重复上一条指令
q退出 y确认退出 n取消退出退出

phase_1

1. 进入调试模式

使用 gdb bomb 进入调试模式
进入调试模式

2. 执行命令到main

使用 start 命令使代码执行到 main 函数停止
执行命令到main

3. 显示源码和汇编

使用 layout split 命令 显示源码和汇编代码
显示源码和汇编代码

4. 将程序运行到第一关

使用 next 指令 + 回车键
第一关

5. 让程序继续运行

随便输入一些内容,让程序继续运行
随便输入一些内容

6. 单步进入调试

使用 si 指令单步调试
进入phase_1
进入phase_1

7. 找bomb前面的比较

运行到这一行发现有一个call 指令 调用的 string_not_equal
比较两个string 是否相等 string_not_equal
现在让我们输出一下 string_not_equal 的传入参数 %rdi 和 %rsi
使用 x/s $寄存器名 即可打印寄存器内保存的字符串
rdi与rsi保存的值
其中1234是我们输入的字符那么与1234作比较的便为需要输入的值了
All your base are belong to us.
让我们尝试一下
使用 ./ 文件名 运行文件
可以发现当我们输入别的字符时就 BOMB!!! 了
当我们输入我们找到的字符串提示第一关已经过了
过第一关

phase_2

phase_3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值