- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机系统基础实验 Bomblab
1. 简介
本实验通过要求你使用课程所学知识拆除一个 “binary bombs ”来增强对程序的机器级
表示、汇编语言、调试器和逆向工程等方面原理与技能的掌握。 一个 “binary bombs ”(二
进制炸弹,下文将简称为炸弹)是一个Linux 可执行程序,包含了7 个阶段(或层次、关卡)。
炸弹运行的每个阶段要求你输入一个特定字符串,你的输入符合程序预期的输入,该阶段的
炸弹就被拆除引信即解除了,否则炸弹 “爆炸”打印输出 “BOOM!!! ”。实验的目标是拆
除尽可能多的炸弹层次。
每个炸弹阶段考察了机器级程序语言的一个不同方面,难度逐级递增:
阶段1:字符串比较
阶段2 :循环
阶段3 :条件/分支
阶段4 :递归调用和栈
阶段5:指针
阶段6:链表/指针/结构
另外还有一个隐藏阶段 (树型结构),只有当你在第4 阶段的解后附加一特定字符串后
才会出现。
为完成二进制炸弹拆除任务,你需要使用 gdb 调试器和 objdump 来反汇编炸弹的可执
行文件并跟踪调试每一阶段的机器代码,从中理解每一汇编语言代码的行为或作用,进而设
法推断拆除炸弹所需的目标字符串。比如在每一阶段的开始代码前和引爆炸弹的函数前设置
断点。
实验语言:C
实验环境:Linux
2. 实验步骤
2.1. 第一步:获取bomb
在浏览器中打开:15213,在二进制炸弹请求表格中输入你的学号和邮箱
地址 (邮箱地址合法即可,不需要使用),点击Submit 按钮 (注意不要反复点击)。服务
器会构造属于你的炸弹,并以 tar 文件的形式 bombxxxxxxxxxxxxx.tar 返回给你,其中
xxxxxxxxxxxxx 是一个你的bomb 的唯一标识,即学号。注意:每个学号只能下载一次bomb
文件,否则会显示 “You have already owned a bomb” 。
图1. Bomb 文件请求页面
解压该 tar 文件( tar -xvf bombxxxxxxxxxxxxx .tar )得到一个目
录./bombxxxxxxxxxxxxx ,其中包含如下文件:
README :标识该bomb 和所有者。
bomb :bomb 的可执行程序。
bomb.c :bomb 程序的main 函数。
2.2. 第二步:拆除bomb
本实验的任务就是拆除炸弹。一定要在指定的虚拟机上完成作业,在其他的环境上运行
有可能导致失败。
运行./bomb 可执行程序需要0 或1个命令行参数(详见bomb.c 源文件中的main() 函数)。
如果运行时不指定参数,则该程序打印出欢迎信息后,期望你按行输入每一阶段用来拆除炸
弹的字符串,根据你当前输入的字符串决定你是通过相应阶段还是炸弹爆炸导致任务失败。
你也可将拆除每一阶段炸弹的字符串按行组织在一个文本文件中,然后作为运行程序时的
唯一一个命令行参数传给程序,程序读入文件中的每一行直到遇到EOF,再转到从stdin 等
待输入。这样对于你已经拆除的炸弹,就不用每次都重新输入,只用放进文件里即可。
前四个阶段每个10 分,第五个阶段20 分,第六个阶段20 得分,第七个阶段(隐藏关)
20 分。每输入错误一次,炸弹爆炸,会扣除0.5 分,最多扣除20 分,即所有阶段的爆炸次
数之和超过40 次之后,爆炸不再继续被扣分。你必须小心!要学会单步跟踪调试汇编代码
以及学会设置断点。你还要学会如何检查寄存器和内存状态。很好的使用调试器是你在未来
的职业生涯中赚到更多money 的一项重要技能。
2.3. 实验结果提交
这是一项独立实验,每个人单独完成。不需要单独提交最后的结果,运行或调试 bomb
程序会自动发送结果到服务器 (请确保你调试执行的虚拟机能够连接上网!),可以在
:15213/scoreboard 查看所有人的成绩结果。强烈建议:在没有了解bomb 运
行机制之前断网,以免尝试性的输出引爆炸弹,并送至服务器端被扣分!!!
图2. Bomb Lab Scoreboard
3. 提示!
下面
您可能关注的文档
最近下载
网络工程师持证人
本人已从事浙江省工程咨询5年,对浙江省内工程信息非常熟悉,可获取新建工程相关联系人、设计院、业主等关键信息。另外从事楼宇自控专业已10年,考取了一建二建等资格证书,有关考试方面的问题(考试心得、方法、学习资料等)都欢饮来咨询交流。
原创力文档


文档评论(0)