CSAPP深入理解计算机系统实验2-二进制炸弹(Windows版本)


    CSAPP大名鼎鼎了,网上许多人都完成了其独具特色的实验,特别是二进制炸弹、缓冲区炸弹等。

    二进制炸弹实验,主要锻炼学习者使用反汇编工具对二进制可执行程序调试、分析的能力。学习者首先需要使用调试器调试bomb可执行文件,对其进行反汇编分析,找出炸弹逻辑,并输入正确的密码,以便顺利拆除炸弹。

    由于许多学习者对Linux不熟悉、对英文不熟悉,所以存在较大的畏惧心理。据此,我依据CSAPP二进制炸弹的原理,自行设计了一个可在windows下面运行的二进制炸弹,重新设计了关卡,并进行中文提示。这个二进制炸弹,主要面向大量学生的课堂,每个学生拿到的炸弹逻辑是不同的,这样每个学生的答案应该是不一样的。

   一、基本环境介绍

    Windows下最好用的调试器、反汇编器,应该是IDA Pro。不幸的是,这个是一个商业软件,不过网上应该都能下到。不行的话,也可以用Ollydbg。

   二、炸弹逻辑

    bomb.exe的逻辑如下:

      CSAPP深入理解计算机系统实验2-二进制炸弹(Windows版本)_第1张图片

   可以看到,由于随机数发生器与学号是绑定的,所以每个学生的执行路径应该都不相同。而且以后可以方便的扩展炸弹逻辑。

   phase_1:简单的字符串比较(每个学生的字符串都不一样)

   phase_2:符合既定规律的六个数

   phase_3:三个数

   phase_4:两个数

   phase_impossible:该级难度,在代码上设置了调试器检测(反调试器)、执行时间检测(反调试器)、输入代码校验(简单的异或校验)等防范措施,当然不是专业级的。学生输入的密码,实际是可执行的机器码。需要分析程序的行为,才能够顺利抵达出口。

   phase_secret:隐藏任务,程序中无法直接抵达。如果学生完成了phase_impossible,那么才可能抵达此任务。


   此炸弹采用lcc-win32编译器编译的。至于为什么不用VC的强大的编译器编译,主要是因为它们做了许多优化,甚至把函数名都去掉了,不方便调试啊。

CSAPP深入理解计算机系统实验2-二进制炸弹(Windows版本)_第2张图片


炸弹下载:

http://download.csdn.net/detail/kbkpbot/9048839

你可能感兴趣的:(CSAPP深入理解计算机系统)