今天开始解决逆向工程拆除“二进制炸弹”的第三道题目,对一些用到的语句进行了总结。
phase_3
- 前面是 数据保护 赋值 移值 传值,gdb进入0x804a307看看
- gdb进入0x804a307看看,发现要输入两个数字
- 数字的范围是从1-7,输入第一个数eax以及一系列操作,观察发现刚好有7个eb 05,且有很多加减操作
- 在此处进行比较
- 设置断点,第三次 输入数字第一个为1,要不会爆炸。
- 用ni命令调试到8048cb1时,用info reg
- 尝试一下,成功了!
知识回顾
-
cmp/cmpl指令
-
<explode_bomb>函数被调用的位置以及其跳转或者触发原因
-
gdb指令:x:显示内存内容
- 基本用法:以16进制的形式显示明码地址(例如:$0x800026262)处开始的20个字节的内容:
- (gdb) x/20x 明码地址
- 显示地址明码地址处开始的2个字符串
- (gdb) x/2s 明码地址
- 基本用法:以16进制的形式显示明码地址(例如:$0x800026262)处开始的20个字节的内容:
-
info reg 将当前内存中的全部变量的内容打印出来
-
赋值语句:mov:直接修改a的值 和lea:将a的地址指向b
-
调试:gdb bomb
-
执行:./bomb
-
test指令:eg. %eax,%eax 返回值为1 否则返回0
-
call: 调用函数
-
je 、jmp跳到后面的明码地址那
-
jns 看符号位是否为0,
-
(%esp,%ebx,4)意思:esp+=4*ebx