CS:APP-Bomb Lab拆炸弹实验

实验前准备:

  1. 由于可执行文件的反汇编代码过长,为了便于阅读,将它重定向输出到文件中,再使用文本编辑器vi或gedit来阅读。
    objdump -d bomb > bomb.s

  2. 首先观察main函数部分并对其进行gdb调试,看在调用每个关卡函数前做了什么
    CS:APP-Bomb Lab拆炸弹实验

    阅读汇编代码可知,在调用每个关卡函数之前,程序会首先输出一行提示的字符串,然后需要我们输入一个字符串作为拆炸弹的“密码”。
    可以看到在执行read_line函数后,eax中保存的即为我们输入的字符串,图中即将要执行的这一步是为phase_1函数准备参数。了解这些将对后面计算栈帧位置以及推断寄存器中的值很有帮助。

具体实验步骤:

CS:APP-Bomb Lab拆炸弹实验
CS:APP-Bomb Lab拆炸弹实验
CS:APP-Bomb Lab拆炸弹实验
CS:APP-Bomb Lab拆炸弹实验
CS:APP-Bomb Lab拆炸弹实验
CS:APP-Bomb Lab拆炸弹实验
CS:APP-Bomb Lab拆炸弹实验
CS:APP-Bomb Lab拆炸弹实验