bomblab是CSAPP《深入理解计算机系统》这门课程的第二个配套实验,华中某综合性985的某门课程基本照搬了cmu cs213这门课的教材及其配套习题和实验,当然也就包括这个lab。 实验在educoder上进行,平台提供了一个命令行,应该(?)是一个完整的linux云服务器,里面有一个程序,需要在上面用gdb进行调试和反编译,以找到使炸弹...
400e0a:e8 f1 fd ff ff callq 400c00<__printf_chk@plt>#printf("Usage: %s []\n",argv[0]);400e0f:bf08000000mov $0x8,%edi400e14:e807fe ff ff callq 400c20<exit@plt>#exit(8);400e19:e884050000callq 4013a2<initialize_bomb>#调用initialize_bomb();400e1e:bf38234000mov $0x402338,%e...
Bomblab 的主要是通过姓名学号可以从服务器上下载一个bomb的tar包,用objdump可以得到它的汇编源码与c文件。在程序运行过程中需要输入若干字符串,如果字符串不符合要求则将导致炸弹爆炸,每爆炸一次扣0.25分。所需输入字符串的信息可以根据分析汇编代码以及GDB的单步调试推测得出,不过只能在服务器上运行与调试程序。花了一...
2. 实验:bomb 2.1 实验环境 2.2 实验介绍 2.3 炸弹1 2.4 炸弹2 2.5 炸弹3 3. 总结 前言 这一章主要介绍了x86架构下汇编指令的相关内容,最好是需要一些汇编的基础才能上手比较快,书上花了100页+来介绍这些内容~。lab是“拆除炸弹”,使用gdb调试阅读程序的汇编代码,进而“拆除”出程序中的“炸弹”。 1. 碎...
和我们在bomb.c中看到的是一样的,main函数内每次先调用read_line,然后将返回的地址传递给phase_n函数,如果输入的不正确那么就会执行爆炸函数。所以当然就顺着main函数执行轨迹一个个来排雷~ Phase_1 先查看phase_1反汇编代码: 0000000000400ee0 <phase_1>: ...
voidphase_2(){//Number in %rsp,Edge in %rbp,(%register)表示寻址得到的值if((%rsp)==1)//保证第一个数是1{gotoLabel_400f30;}Label_400f17:%eax=(%rbx-0x4);%eax=2*%eax;if((%rbx)!=%eax)//保证后一个数为前一个数的两倍{explode_bomb();}%rbx=%rbx+0x4;if(%rbx==%rbp){return;...
csapp深入理解计算机系统 bomb lab(1)phase_1,如果%eax不为0,执行explode_bomb函数,所以只有当string_not_equal返回的值为0,才可以解开炸弹。通过阅读汇编程序,推
CSAPP Lab:Bomb Lab——从拆弹到爆炸。。。 这个实验的要做的是用gdb逆向一段code,通过查看汇编代码以及单步调试找出这段code需要你填入的字符串,好像每个人都不一样,所以每个人都需要找到自己的拆弹密码,很有意思。 实验一共有6关,我们一关关来看一下:...
《深入理解计算机系统》第三版里面的几个lab很有意思,我东拼西凑总算做完了其中六个,现在和大家分享一下。部分代码来自网上,在实验报告最后都有标注参考内容。如果侵犯了您的著作权,请与我联系,我将删除侵权内容,谢谢~ 今天我们更新的是第二个实验,bomblab,即通过阅读汇编代码解读程序逻辑,输入正确的内容以通过函数...
BombLab提供给我们的文件非常简单,只有一个编译不了的C文件bomb.c,和一个目标代码文件bomb。当运行bomb文件时,它会要求输入6个字符串,如果其中的任何一句是错的,炸弹就会“爆炸”。我们必须利用反汇编工具逆向分析这个文件,并找到这6个字符串,从而“拆除”炸弹。 这个实验看起来就非常有趣! 运行一下bomb文件: 提...