# 实验 2：Bomb Lab

## 实验附件

* README
  * [http://csapp.cs.cmu.edu/3e/README-bomblab](http://csapp.cs.cmu.edu/3e/README-bomblab)
* Writeup
  * [http://csapp.cs.cmu.edu/3e/bomblab.pdf](http://csapp.cs.cmu.edu/3e/bomblab.pdf)
* 版本历史
  * [http://csapp.cs.cmu.edu/3e/bomblab-release.html](http://csapp.cs.cmu.edu/3e/bomblab-release.html)
* 自学材料
  * [http://csapp.cs.cmu.edu/3e/bomb.tar](http://csapp.cs.cmu.edu/3e/bomb.tar)
* 解答（需使用教师账户登录）
  * [http://csapp.cs.cmu.edu/im/bomb-solution.txt](http://csapp.cs.cmu.edu/im/bomb-solution.txt)

## 实验简介

“二进制炸弹”是一个程序，以目标代码文件的形式提供给学生。运行时，它会提示用户键入 6 个不同的字符串。如果其中任何一个错误，炸弹就会“爆炸”，打印错误消息并将事件记录在打分服务器上。学生们必须通过反汇编和逆向程序，“拆除”他们自己独特的炸弹，以确定这 6 个字符串应该是什么。该实验教学生理解汇编语言，并迫使他们学习如何使用调试器（debugger）。它也很有趣。这是 CMU 本科生的一个传奇实验。

上面的自学讲义中给出了一个 Linux/x86-64 二进制炸弹，你可以自己试试。通知打分服务器的功能已被禁用，所以你可以随意引爆此炸弹而不受惩罚。如果你是一个拥有 CS:APP 帐户的讲师，那么你可以下载解答。

