2. 实验:bomb 2.1 实验环境 2.2 实验介绍 2.3 炸弹1 2.4 炸弹2 2.5 炸弹3 3. 总结 前言 这一章主要介绍了x86架构下汇编指令的相关内容,最好是需要一些汇编的基础才能上手比较快,书上花了100页+来介绍这些内容~。lab是“拆除炸弹”,使用gdb调试阅读程序的汇编代码,进而“拆除”出程序中的“炸弹”。 1. 碎...
Bomb Lab是课本第三章:程序的机器级表示的配套实验。 1.概况 邪恶博士编写了一个炸弹程序,我们的任务是拆除它。 实验文件地址:boom lab 将压缩包进行解压后,可以看到其中包含三个文件: -bomb: 可执行文件 -bomb.c:c语言代码(缺少头文件) -README: 注释 2. 工具 2.1 GDB GDB 全称“GNU symbolic debugge...
main 函数通过从 stdin 读取一个字符串(无参数时)或从一个文件中读取字符串输入(避免我们在"拆解"后几个阶段的炸弹时频繁输入前几个阶段炸弹的字符串,参数为该文本文件名,如下图) 一共六个阶段的炸弹,从 phase_1 到 phase_6,都是读取字符串,处理字符串,当前阶段炸弹拆除的步骤 最后几行的注释似乎在暗示我们...
Step 2: 拆除炸弹 你在这个实验室的工作就是拆除炸弹。你必须在其中一台机器上完成作业。事实上,有传言说邪恶博士真的很邪恶,如果把炸弹运到别处,它总是会爆炸。据我们所知,炸弹里还有其他一些防篡改装置。 你可以使用许多工具来帮助你拆除炸弹。请看提示部分获取一些提示和idea。最好的方法是使用调试器逐步通过反...
首先查看Bomb文件夹中的bomb.c可以发现,我们一共要拆六个炸弹,而每一个炸弹大概都是如下的形式: input=read_line();/* Get input*/phase_1(input);/* Run the phase*/phase_defused();/* Drat! They figured it out!* Let me know how they did it. */printf("Phase 1 defused. How about the ...
实验说明 本实验通过逆向的方式模拟拆炸弹的过程,炸弹共有6道锁,我们需要逐一破解每一道锁,最终拆除炸弹。我们可以通过执行./bomb开始输入密码,也可以把密码输入到任意文件中作为参数传递给./bomb,例如./bomb passwords.txt 在动手实验之前需要仔细阅读实验说明,其中重点阅读Hints的章节,这里提供一些提示 ...
Lab分析 Bomblab主要是希望我们通过使用基本的逆向工程的手段,通过已有的bomb.c的主函数程序的提示,来获取每个phase的密钥,要注意的是,在CMU的课程中,炸弹被触发一次就会扣掉一半的分,在self-study版本中则没有这种记分机制,练习者也应该学会使用gdb,来让自己尽可能少的避免炸弹的爆炸。 Lab可以在csapp.cs.cmu.edu...
main函数的源代码已经在bomb.c给出 ,或者在gdb中有list main查看 从二进制文件bomb生成反汇编:objdump -d bomb > bomb.objdump-d.txt phase 1 在bomb.objdump-d.txt中注意到phase_1函数的汇编代码: 0000000000400ee0 <phase_1>: 400ee0: 48 83 ec 08 sub $0x8,%rsp ...
《深入理解计算机系统》(CSAPP)实验二 —— Bomb Lab 这是CSAPP的第二个实验,主要让我们理解代码的机器级表示,最重要的是理解每个寄存器的作用以及如何使用这些寄存器。本次的实验内容有点晦涩难懂,对于这些内容多看下习惯就好了。 本次实验中的bomb文件中共有7个炸弹问题(6个显式的和1个隐藏的),每条问题...
其中几个纵享盛名的实验,分别是:BombLabMollocLabShellLab 文章中所有链接已更新至Github仓库中,不喜欢简… 珍珠膏发表于从零开始做... Lab3 CSAPP: AttackLab 很好玩! 写在前面:这个lab真的很好玩,个人感觉这会比lab2更好玩,并且能学到很多纸上得不到的东西。 建议: 每一个小lab都分文件比较好,这样不容易...