3.bomb.c文件解析 #include<stdio.h>#include<stdlib.h>#include"support.h"#include"phases.h"/** Note to self: Remember to erase this file so my victims will have no* idea what is going on, and so they will all blow up in a* spectaculary fiendish explosion. -- Dr. Evil*/FILE*infi...
2. 实验:bomb 2.1 实验环境 2.2 实验介绍 2.3 炸弹1 2.4 炸弹2 2.5 炸弹3 3. 总结 前言 这一章主要介绍了x86架构下汇编指令的相关内容,最好是需要一些汇编的基础才能上手比较快,书上花了100页+来介绍这些内容~。lab是“拆除炸弹”,使用gdb调试阅读程序的汇编代码,进而“拆除”出程序中的“炸弹”。 1. 碎...
实验目的:进一步了解机器级代码,提高汇编语言、调试器和逆向工程等方面原理与技能的掌握。 实验环境:C、linux 实验获取:进入csapp官网,点击linux/x86-64 binary bomb下载实验压缩包。 实验说明:一共有6个关卡,每个关卡可以输入一串字符,只有输入正确才能拆出炸弹。 只有可执行程序,不知道六个关卡函数具体的代码都是什么。
CSAPP Lab:Bomb Lab——从拆弹到爆炸。。。 这个实验的要做的是用gdb逆向一段code,通过查看汇编代码以及单步调试找出这段code需要你填入的字符串,好像每个人都不一样,所以每个人都需要找到自己的拆弹密码,很有意思。 实验一共有6关,我们一关关来看一下: phase_1 打开bomb.c看些c源码(这里的核心方法已经被删...
和我们在bomb.c中看到的是一样的,main函数内每次先调用read_line,然后将返回的地址传递给phase_n函数,如果输入的不正确那么就会执行爆炸函数。所以当然就顺着main函数执行轨迹一个个来排雷~ Phase_1 先查看phase_1反汇编代码: 0000000000400ee0 <phase_1>: ...
我们老师也将CMU原配的几个Lab作业给移植 了过来,目前已经完成了datalab和下面要介绍的bomblab,做过之后真的是觉得受益匪浅。Bomblab 的主要是通过姓名学号可以从服务器上下载一个bomb的tar包,用objdump可以得到它的汇编源码与c文件。在程序运行过程中需要输入若干字符串,如果字符串不符合要求则将导致炸弹爆炸,每爆炸...
CSAPP-Bomb Lab 这个实验的逻辑是这样的 需要使用gdb debug 进入到phase_x的各个函数,但是单步调试step是进不去的(也不难理解,如果gdb可以直接进入那这个实验还有什么难点) 但是反汇编得到的结果是全部的内容,通过阅读反汇编代码,找到一些关键节点,通过gdb对二进制进行dubug添加breakpoint从而查看一些内容找到结果...
Bomb是一个二进制炸弹,拆除他需要分别输入六条命令,一旦输入错误就会爆炸。在bomb.c文件中可以看到有6个phase,每个phase的输入是一条字符串,所以关键就是通过分析phase的内容来判断我们应该输入的字符串是什么。 理论上通过阅读汇编代码就可以找到答案,前3题或许可以,后边的题目就有点难度了。熟练使用gdb也是这个lab很...
使用gdb bomb开始调试程序,首先在explode_bomb、phase_1函数处设置断点。 输入的字符串为hello! 观察以%rdi为地址的字符串验证了之前的假设。 %rdi处的字符串 所以经过分析,phase_1只是简单地把输入的字符串与0x402400处的字符串相比较,如果相等则拆弹成功。
BombLab提供给我们的文件非常简单,只有一个编译不了的C文件bomb.c,和一个目标代码文件bomb。当运行bomb文件时,它会要求输入6个字符串,如果其中的任何一句是错的,炸弹就会“爆炸”。我们必须利用反汇编工具逆向分析这个文件,并找到这6个字符串,从而“拆除”炸弹。 这个实验看起来就非常有趣! 运行一下bomb文件: 提...