前言

《深入理解计算机系统》官网:http://csapp.cs.cmu.edu/3e/labs.html
该篇文章是实验二Bomb Lab的Writeup机翻。
原文:http://csapp.cs.cmu.edu/3e/bomblab.pdf
阅读文档能对实验有所帮助。

在官网点击下方即可下载实验二的文件

1 介绍

邪恶的邪恶博士在我们的班级机器上植入了大量的“二元炸弹”。二元炸弹是一个由一系列阶段组成的程序。每个阶段都希望您在stdin上键入一个特定的字符串。如果您键入了正确的字符串,那么阶段将被解除,炸弹将继续进入下一个阶段。否则,炸弹会通过打印“BOOM!!”来爆炸,然后终止。当每个阶段都被拆除时,炸弹就被拆除了。
我们要处理的炸弹太多了,所以我们给每个学生一枚要拆除的炸弹。你的任务,你别无选择,只能接受,就是在截止日期前拆除炸弹。祝你好运,欢迎来到拆弹小组!

第一步:找到炸弹

你可以通过将浏览器指向:
http://Bomblab::SERVERNAME:Bomblab::SERVER_NAME:Bomblab::SERVERN​AME:Bomblab::REQUESTD_PORT/
这将显示一个二进制炸弹请求表单供您填写。输入您的用户名和电子邮件地址,然后点击提交按钮。服务器将构建你的炸弹,并将它以一个名为bombk.tar的tar文件的形式返回给你的浏览器,其中k是你的炸弹的唯一编号。
将bombk.tar文件保存到您计划执行工作的(受保护)目录中。然后给出命令:tar -xvf bombk.tar。这将创建一个名为./bombk的目录,包含以下文件:
• README:确定炸弹和它的主人
• bomb:可执行的二进制炸弹。
• bomb.c:炸弹主要程序的源文件还有邪恶博士的友好问候。
• writeup.{pdf,ps}:实验室那样。
如果因为某些原因你要求多个炸弹,这不是一个问题。选择一个炸弹,然后删除其余的

第二步:拆除炸弹

你在这个实验室的工作是拆除你的炸弹。
你必须在一台课堂机器上做作业。事实上,有传言说,邪恶博士真的是邪恶的,如果跑到别处,炸弹总是会爆炸。据我们所知,炸弹里还有其他一些防篡改装置。
你可以使用许多工具来拆除炸弹。请参阅提示部分以获得一些提示和想法。最好的方法是使用您最喜欢的调试器来逐步完成反汇编的二进制文件。
每次你的炸弹爆炸都会通知炸弹服务器,你会在实验室的最终得分中损失1/2分(最多20分)。所以引爆炸弹是有后果的。你一定要小心!
前四个阶段各得10分。第5阶段和第6阶段稍微困难一些,所以每个阶段都值得获得15分。所以你的最高分数是70分。
虽然阶段变得越来越难以消除,但随着您从一个阶段移动到另一个阶段,您获得的专业知识应该可以抵消这个困难。 但是,最后阶段即使是最好的学生也会挑战,所以请不要等到最后一刻才开始。
炸弹忽略空白输入行。 例如,如果您使用命令行参数运行炸弹:
linux> ./bomb psol.txt
然后它将从 psol.txt 读取输入行,直到到达 EOF(文件结尾),然后切换到 stdin。 在虚弱的时刻,邪恶博士添加了此功能,因此您不必继续为已经解除的阶段重新键入解决方案。
为避免意外引爆炸弹,您需要学习如何单步执行汇编代码以及如何设置断点。 您还需要学习如何检查寄存器和内存状态。 做实验的一个很好的副作用是你会非常擅长使用调试器。 这是一项至关重要的技能,它将为您的职业生涯的其余部分带来丰厚的回报。

组织工作

这是一个单独的项目。 所有的手都是电子的。 澄清和更正将张贴在课程留言板上。

Handin

没有明确的指示。当你练习时,炸弹会自动通知你的教练你的进度。你可以通过查看班级记分牌来跟踪你的成绩:
http://Bomblab::SERVERNAME:Bomblab::SERVER_NAME:Bomblab::SERVERN​AME:Bomblab::REQUESTD_PORT/scoreboard
这个网页不断更新,以显示每个炸弹的进展。

提示(请阅读!)

有很多方法可以拆除炸弹。您可以在不运行程序的情况下对其进行详细的检查,并确切地了解它的功能。这是一项有用的技术,但并不总是容易做到。您还可以在调试器下运行它,观察它一步一步地做什么,并使用这些信息来消除它。这可能是化解它的最快方法。
我们确实有一个请求,请不要使用暴力!你可以编写一个程序来尝试每一个可能的键来找到正确的键。但这是不好的几个原因

  • 每次你猜错,炸弹就会爆炸,你会损失1/2分(最多20分)。
  • 每次你猜错了,一条消息就会发送到炸弹服务器。您可能会很快使网络充满这些消息,并导致系统管理员取消您的计算机访问权限。
  • 我们没有告诉你字符串有多长,也没有告诉你里面有什么字符。即使您做出了(不正确的)假设,即它们的长度都小于80个字符,并且只包含字母,那么对于每个阶段,您将有2680次猜测。这将需要很长时间运行,你不会在作业到期之前得到答案。

有许多工具被设计来帮助你弄清楚程序是如何工作的,以及当它们不能工作时是什么问题。这里列出了一些工具,你可能会发现有用的分析你的炸弹,并提示如何使用它们。

  • gdb
    GNU调试器,这是一个命令行调试器工具,可以在几乎所有平台上使用。您可以逐行跟踪一个程序,检查内存和寄存器,查看源代码和汇编代码(我们不会为大多数炸弹提供源代码),设置断点,设置内存监视点,并编写脚本。
    CS:APP网站:
    http://csapp.cs.cmu.edu/public/students.html
    有一个非常方便的单页GDB摘要,您可以打印出来并用作参考。下面是一些使用gdb的技巧。

    • 为了避免每次输入错误时炸弹都会爆炸,你需要学习如何设置断点。联机文档,在gdb命令提示符中输入" help “,或在Unix提示符中输入” man gdb “或” info gdb "。有些人还喜欢在emacs中以gdb模式运行gdb。
  • objdump -t
    这会打印出炸弹的符号表。符号表包括炸弹中所有函数和全局变量的名称,炸弹调用的所有函数的名称,以及它们的地址。您可以通过查看函数名了解一些东西!
    尽管objdump -d提供了许多信息,但它并没有告诉您全部情况。对系统级函数的调用以一种神秘的形式显示。例如,对sscanf的调用可能如下所示:
    8048c36: e8 99 fc ff ff call 80488d4 <_init+0x1a0>
    要确定调用是sscanf,需要在gdb中进行反汇编。
  • strings
    这个实用程序将显示炸弹中的可打印字符串。

正在寻找一种特殊的工具?文档怎么样?别忘了,命令和信息是你的朋友。特别是,man ascii可能会有用。info gas将会给你更多关于GNU汇编程序的信息。同时,网络也可能是信息的宝库。如果你被难住了,请向你的导师寻求帮助。

《深入理解计算机系统》实验二Bomb Lab下载和官方文档机翻相关推荐

  1. 《深入理解计算机系统》实验四Architecture Lab下载和官方文档机翻

    前言 <深入理解计算机系统>官网:http://csapp.cs.cmu.edu/3e/labs.html 该篇文章是是实验四Architecture Lab中的Writeup(archl ...

  2. 《深入理解计算机系统》实验二Bomb Lab

    前言 <深入理解计算机系统>实验二Bomb Lab的下载和官网文档的机翻请看 <深入理解计算机系统>实验二Bomb Lab下载和官方文档机翻 用的调试工具是gdb,用到的指令如 ...

  3. CSAPP实验二——bomb lab实验

    CSAPP实验二-- bomb lab实验 实验前准备 第一部分(phase_1) 第二部分(phase_2) 第三部分(phase_3) 第四部分(phase_4) 第五部分(phase_5) 第六 ...

  4. python-66:BS4实例--下载BS4官方文档

    2019独角兽企业重金招聘Python工程师标准>>> 前面已经对BS4有了简单的认识和讲解,该讲的都讲了,原本也已经想好了一个实例,但是现在想往后推一推,因为我实在受不了了,我们前 ...

  5. 高速下载苹果官方文档(百度云盘)

    分享一个下载苹果官方文档的博客链接 http://devonios.com/zy/docset-download 推荐使用Dash浏览官方API文档.下载完整后将文件手动放到Dash的目录下,即可尽享 ...

  6. 如何下载 spring 官方文档 pdf

    spring 系列框架,官方文档都是html 格式的, 并未提供pdf 的下载入口.在html 路径后直接添加/pdf 即可进入pdf 下载页面 1. spring 官网 进入spring官网: ht ...

  7. 百度网页评级标准完整版下载【官方文档】

    该文档是query-url质量评估的详细标准指南,内容较详细,当你遇到问题可以随时查看,建议您可以先阅读Part6的快速导读,了解本标准核心内容. 本文档主体内容包括以下方面: 评估基础知识:part ...

  8. Spark学习之路 (二十三)SparkStreaming的官方文档

    一.SparkCore.SparkSQL和SparkStreaming的类似之处 二.SparkStreaming的运行流程 2.1 图解说明 2.2 文字解说 1.我们在集群中的其中一台机器上提交我 ...

  9. 【计算机系统基础bomb lab】CSAPP实验:Bomb Lab

    [计算机系统基础bomb lab]CSAPP实验:Bomb Lab CSAPP 实验:Bomb Lab 实验内容简述 实验环境 实验过程:phase 1 phase 1 调试过程 实验过程:phase ...

最新文章

  1. 经济学人: 低调应用, 高调回报, 亚马逊才是AI技术最大受益企业
  2. uva673 Parentheses Balance
  3. android 服务的应用,在Activity中实现背景音乐播放
  4. ML 自学者周刊:第 2 期
  5. 微软、UIUC韩家炜组联合出品:少样本NER最新综述
  6. 电机编码器调零步骤_编码器原理、霍尔应用原理、调整步骤三个方面进行解读编码器调试...
  7. linux c之管道的介绍、创建关闭和简单读写(父进程向子进程写入数据)
  8. 判断字符串是否构成回文_构成字符串回文的最小删除数
  9. Linux监控工具介绍系列——smem
  10. Python3+Selenium3+Unittest+ddt+Requests 接口自动化测试框架
  11. qq浏览文件服务器,腾讯浏览服务
  12. Java项目的命名规范
  13. latex中report目录_LaTeX提纲
  14. 混血网站诞生 公司相互嫁接成就新商业模式
  15. HTML怎么跟随页面缩放,如何让网页跟着 浏览器全比例缩小(示例代码)
  16. 淘特(淘宝特价版)关键词搜索
  17. WIN10企业版系统安装(KB12特供版:采用大白菜启动盘)
  18. matlab小球水平抛出,如何用Matlab制作小球自由落体运动的动画
  19. coreldraw sp2精简版 x4_coreldraw x4
  20. 做网站时域名应该怎么选择

热门文章

  1. 【预测模型】基于RLS算法求解数据预测matlab代码
  2. 【linux】shell脚本 ps 命令学习
  3. Windows挂载Linux网络共享文件夹
  4. 什么oracle,什么是ORACLE?
  5. JAVA 学习日志 测试抽象类的程序,每天进步/退步一点点,变化很大哦,努力!
  6. 循环结构习题:公式求π值
  7. python画波浪线_PPT绘制波浪线的四种方法
  8. 三星同时发展两种电视面板技术,围追堵截LG
  9. app免填邀请码安装如何实现?
  10. 英雄不问出处--十大名企用人理念