BombLab

本文详细介绍了CSAPP的BombLab实验,包括实验背景、准备工作、拆弹过程和前四个phase的解析。作者通过调试和分析汇编代码,逐步揭示了每个phase的解题思路和答案。实验提升了作者对汇编和调试工具的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BombLab

       在大一下学期的学习中,接触到了CSAPP这本书,在学习完之后,对第三章的汇编语言很感兴趣,加之有高中同学在做BombLab,与他一起做到了第四个。大二时才想起要写日志,再重新熟悉了一遍BombLab后,由于时间问题,只写完了前四个,后两个经过观察,发现第五个还是有机可循,第六个真的看的我一头雾水。在此,就谈谈已经写完的四个phase吧。(听说还有隐藏的phase,等以后有时间了再一探究竟)

BombLab简介

       这是CSAPP第三章的配套实验,在CSAPP官网的README中我们能看到对这个实验的基本介绍,利用万能的谷歌翻译,介绍如下:
在这里插入图片描述
       即该实验有六个phase,每一个phase需要输入一个字符串,如果输入错误,就会打印BOOM!!
       解决方法也写在了README中:
在这里插入图片描述
       简言之就是使用gdb调试打断点,获取隐藏起来的字符串答案,至于README其他的部分,我们就不必再作了解了,点击官网中的Self-Study Handout即可下载,这里给出CSAPP官网网址:CSAPP官网

       下载解压之后,使用Viusal Studio Code打开,整个文件夹是这样的:
在这里插入图片描述
除去bomb.s,这就是文件夹的全部内容了
       bomb.c是一个C语言源文件,只有main函数,它介绍了程序的大概执行顺序
       bomb是一个二进制的可执行文件,通过执行它,输入我们的答案以验证是否正确

实验前的准备

  1. Linux系统环境
            如Ubuntu,CentOS等
  2. 简单的Linux命令使用
            如tar,cd等
  3. objdump反汇编工具的使用
            虽说是需要使用反汇编工具,但也只是简单的使用这一条命令:
            objdump -d [filename]
  4. gdb调试工具的使用
           这是需要重点掌握的技术,在本实验中,具体用到的命令有:
           打断点:break [line-number]
           清除断点:clear [line-number]
           显示断点信息:info break
           运行:run
           显示数据:print
           总之,gdb是非常强大的调试工具,可以使用man命令多多学习gdb的使用,利用重定向我们可以很快得到一份gdb的文档:
    man gdb > gdb.txt
    在这里插入图片描述
    这里提供一份gdb的使用手册:gdb cheat sheet

拆弹之前

       工欲善其事,必先利其器。首先我们要做的就是选择一个好的的阅读代码的工具,这里选择的是VSCode,它本来是一个文本编辑软件,得益于它庞大的插件数量,它可以被打造为一个全能的IDE。VSCode提供Windows,Linux,MacOS版本,甚至于ARM平台都有它的身影。
       下载安装完毕后,装上汇编支持,便可以着手阅读代码了。
       首先是bomb.c的源文件:

/* Hmm...  Six phases must be more secure than one phase! */
    input = read_line(); /* Get input                   */
    phase_1(input);      /* Run the phase               */
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值