It's our wits that make us men.

2019/3/9 二进制炸弹phase_3

Posted on By LuLu

​ 今天开始解决逆向工程拆除“二进制炸弹”的第三道题目,对一些用到的语句进行了总结。

phase_3

  • 前面是 数据保护 赋值 移值 传值,gdb进入0x804a307看看

img

  • gdb进入0x804a307看看,发现要输入两个数字

img

  • 数字的范围是从1-7,输入第一个数eax以及一系列操作,观察发现刚好有7个eb 05,且有很多加减操作

img

  • 在此处进行比较

img

  • 设置断点,第三次 输入数字第一个为1,要不会爆炸。

img

  • 用ni命令调试到8048cb1时,用info reg

img

  • 尝试一下,成功了!

img

知识回顾

  • cmp/cmpl指令

  • <explode_bomb>函数被调用的位置以及其跳转或者触发原因

  • gdb指令:x:显示内存内容

    • 基本用法:以16进制的形式显示明码地址(例如:$0x800026262)处开始的20个字节的内容:
      • (gdb) x/20x 明码地址
    • 显示地址明码地址处开始的2个字符串
      • (gdb) x/2s 明码地址
  • 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