As a test, we input `abcdef` and utilize gdb to delve into more details. Setting a breakpoint at `<phase_5>` and running the bomb, we can inspect where the string `abcdef` has been stored. Upon reviewing the code in function ``, it's apparent that there's always a similar set ...
readme中没写什么有用的内容,bomb文件是编译完成的文件,bomb.c是本次实验的源码,打开看下,大概浏览了一遍,一共有phase_1 ~ phase_6 6个炸弹,从命令行输入的内容必须要和phase函数中的一致,否则就会爆炸退出程序。phase函数并没有给出源码,所以无法得知其期望的字符串是什么。给了bomb可执行文件,我们就...
使用gdb ./bomb命令进入gdb模式,首先对phase_1和expload_bomb打点,这样即使输入错了也不会立刻结束。使用r运行后随意输入几个字符,接下来对其反编译(layout asm) gdb ./bomb b phase_1 b expload_bomb r layout asm 得到phase_1的反汇编代码如下: 为函数分配栈帧 设置string_not_equal的参数 调用函数,函数...
观察到:将0x402400写到寄存器%esi中,随后调用了strings_not_equal(判断字符串是否不想等),如果返回值%eax是0,则跳转到400ef7,进行栈恢复并且结束phase_1函数。如果返回值不是0,则会执行explode_bomb函数,炸弹就爆炸了。以上是phase_1函数的逻辑,注意到rsi是传递第二个参数的,而所以我们需要得到内存中rsi是传递...
bomblab是CSAPP《深入理解计算机系统》这门课程的第二个配套实验,华中某综合性985的某门课程基本照搬了cmu cs213这门课的教材及其配套习题和实验,当然也就包括这个lab。 实验在educoder上进行,平台提供了一个命令行,应该(?)是一个完整的linux云服务器,里面有一个程序,需要在上面用gdb进行调试和反编译,以找到使炸弹...
Bomb Lab 实验说明 这个实验是依靠汇编代码解开六道谜题也就是phase_1到phase_6,都是以函数形式给出,我们只需要看汇编代码的函数部分,让输入数据进入函数后能绕过所有炸弹就行。 个人感觉,其实只要耐心看下去,这个实验谁都能解开所有谜题,唯一的难点就是刚开始对汇编和gdb一无所知的时候,几乎都不知道这个实验到底要...
CSAPP-Bomb Lab 这个实验的逻辑是这样的 需要使用gdb debug 进入到phase_x的各个函数,但是单步调试step是进不去的(也不难理解,如果gdb可以直接进入那这个实验还有什么难点) 但是反汇编得到的结果是全部的内容,通过阅读反汇编代码,找到一些关键节点,通过gdb对二进制进行dubug添加breakpoint从而查看一些内容找到结果...
和我们在bomb.c中看到的是一样的,main函数内每次先调用read_line,然后将返回的地址传递给phase_n函数,如果输入的不正确那么就会执行爆炸函数。所以当然就顺着main函数执行轨迹一个个来排雷~ Phase_1 先查看phase_1反汇编代码: 0000000000400ee0 <phase_1>: ...
《深入理解计算机系统》第三版里面的几个lab很有意思,我东拼西凑总算做完了其中六个,现在和大家分享一下。部分代码来自网上,在实验报告最后都有标注参考内容。如果侵犯了您的著作权,请与我联系,我将删除侵权内容,谢谢~ 今天我们更新的是第二个实验,bomblab,即通过阅读汇编代码解读程序逻辑,输入正确的内容以通过函数...