lab是“拆除炸弹”,使用gdb调试阅读程序的汇编代码,进而“拆除”出程序中的“炸弹”。 1. 碎碎念 书本上介绍的内容可太多了,书本上主要介绍了: 1.1 访问信息 三种操作数的表示方法: 立即数: 使用$立即数 寄存器中的值: 使用%寄存器, 表示该寄存器中的值 内存中的值: 立即数(寄存器,寄存器,倍率),通过这种...
本题前面读入两个整数的过程和phase_3相同,为便于分析逻辑可以直接替换变量名,容易转换为如下形式 phase_4(str){sscanf(str,"%d %d",a,b);if(a>15){explode_bomb();}ans=func4(a,0,15);if(ans!=0||b!=0){explode_bomb();}} 下面重点放在func4函数中,我们看到这个函数需要三个参数,分析函数后可...
实验二—BombLab 实验材料 一个能够运行的Linux或者Unix系统 官网的实习手册 实验规则 实验共有6个关卡,分别是phase_1到phase_6,对于每一个关卡,...
readme中没写什么有用的内容,bomb文件是编译完成的文件,bomb.c是本次实验的源码,打开看下,大概浏览了一遍,一共有phase_1 ~ phase_6 6个炸弹,从命令行输入的内容必须要和phase函数中的一致,否则就会爆炸退出程序。phase函数并没有给出源码,所以无法得知其期望的字符串是什么。给了bomb可执行文件,我们就...
csapp深入理解计算机系统 bomb lab(1)phase_1 实验目的:进一步了解机器级代码,提高汇编语言、调试器和逆向工程等方面原理与技能的掌握。 实验环境:C、linux 实验获取:进入csapp官网,点击linux/x86-64 binary bomb下载实验压缩包。 实验说明:一共有6个关卡,每个关卡可以输入一串字符,只有输入正确才能拆出炸弹。
Bomb Lab 首先拿到代码我们先看 README 文件,好吧,什么都没有,我们继续看其他文件。 发现bomb.c 文件,但是没有头文件,所以不能进行运行和编译。但可以看出该程序要求从命令行或者文件以“行”为单位读入字符串,每行字符串对应一个phase的输入。如果phase执行完毕,会调用phase_defused 函数表明该 phase 成功搞定。
CSAPP Lab:Bomb Lab——从拆弹到爆炸。。。 这个实验的要做的是用gdb逆向一段code,通过查看汇编代码以及单步调试找出这段code需要你填入的字符串,好像每个人都不一样,所以每个人都需要找到自己的拆弹密码,很有意思。 实验一共有6关,我们一关关来看一下:...
使用gdb bomb开始调试程序,首先在explode_bomb、phase_1函数处设置断点。 输入的字符串为hello! 观察以%rdi为地址的字符串验证了之前的假设。 %rdi处的字符串 所以经过分析,phase_1只是简单地把输入的字符串与0x402400处的字符串相比较,如果相等则拆弹成功。
csapp深入理解计算机系统 bomb lab(1)phase_4 使用disas phase_4 查看phase_4的汇编代码 按照惯例,查看一下0x4025cf内存单元存放的字符串的值是什么 所以phase_4的输入应该是两个整数。 下面使用先猜想后验证的方法尝试找出两个整数的值,猜想两个整数为1,2,在ans.txt写入1,2(前面3行是前面3个phase的答案。)...
《深入理解计算机系统》第三版里面的几个lab很有意思,我东拼西凑总算做完了其中六个,现在和大家分享一下。部分代码来自网上,在实验报告最后都有标注参考内容。如果侵犯了您的著作权,请与我联系,我将删除侵权内容,谢谢~ 今天我们更新的是第二个实验,bomblab,即通过阅读汇编代码解读程序逻辑,输入正确的内容以通过函数...