《Hardware/Software Interface》实验二 是拆炸弹,也是实验里面比较有意思的一个实验,实验能帮助我们加深理解函数的调用过程,提升用GDB调试代码的能力,话不多说,把实验内容附上。
附实验环境:
64位Linux操作系统
拆炸弹
实验总共有六个阶段,难度也是在逐步加大,每个阶段都要求你输入一些信息,只有提供恰当合适的正确信息,才会拆炸弹成功进入下一个阶段,那么如何获得正确的信息,就需要用GDB调试在汇编代码中获得线索。本文主要介绍每个阶段的正确输入的探索过程,对于GDB工具的使用大家可以另找资料来学习。
Phase1
第一关的C代码如下,只有三行(其实每关也都只有三行),流程就是读入输入的数据然后数据处理,若是“正确”的输入,代码就会执行到 phase_defused();若不是“正确”的输入,炸弹就会爆炸,然后程序终止。好的,就让我们来找到本关的“正确”输入。
input = read_line(); /* Get input */
phase_1(input); /* Run the phase */
phase_defused(); /* Drat! They figured it out!