int main(int argc, char *argv[]) { char *input; /* Note to self: remember to port this bomb to Windows and put a * fantastic GUI on it. */ /* When run with no arguments, the bomb reads its input lines * from standard input. */ if (argc == 1) { infile = stdi...
使用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的参数 调用函数,函数...
在Bomb lab 里,我们需要拆除一系列的炸弹,每个炸弹都有一个密码,我们需要通过输入正确的密码来拆除炸弹。如果输入错误,炸弹就会爆炸,而每次爆炸,我们都会失去 0.5 分(上限 20 分)。 所以,对于程序一无所知的我们,显然不能直接莽撞地直接去猜密码,而是需要借助拆弹工具gdb来帮忙防止爆炸,同时通过阅读源码和反编译出...
Bomb Lab 里面只有两个文件 bomb 与 bomb.c,其中 bomb.c 不能通过编译。 与Lab 1 类似,我们在 Ubuntu 中(配置环境见自学指南),在 bomb 文件所在目录下使用./bomb命令执行 bomb 文件(见下)。bomb.c 代码注释中提示我们输入字符串,所以我们随意输入一个字符串试试,输入 kk,提示炸弹爆炸,说明我们输入了错误的...
这个lab需要阅读汇编理解汇编的意思,lecture的内容讲的汇编比较宽泛适合有学习过相关课程的同学,如果没有学习过比较建议在书上阅读不熟悉的部分。这个lab我们需要满足一定的要求让函数不会跳转到explode_bomb函数最终通关。这个过程中需要多次使用到gdb,可以使用如下命令给gdb一些我们预设的命令,例如在explode_bomb打断点等...
2. 实验:bomb 2.1 实验环境 2.2 实验介绍 2.3 炸弹1 2.4 炸弹2 2.5 炸弹3 3. 总结 前言 这一章主要介绍了x86架构下汇编指令的相关内容,最好是需要一些汇编的基础才能上手比较快,书上花了100页+来介绍这些内容~。lab是“拆除炸弹”,使用gdb调试阅读程序的汇编代码,进而“拆除”出程序中的“炸弹”。 1. 碎...
bomb lab实验不是特别好做,内容有点多,将后面的几个较难的phase在这个博客进行介绍。 1. 炸弹4 代码分析 phase_4是第4个 的地方,主要涉及了phase_4()和fun4()这两个函数。<br/>这个地方开始上难度了!首先看一下phase_4的汇编代码: ...
gdb bomb 进入gdb界面后我们通过b main将断点设置在main开始处,并通过r,执行到断点处。执行如下 (gdb)x/s 0x402338 0x402338:"Welcome to my fiendish little bomb. You have 6 phases with" 验证和推理一致,我同样可以在Strings.txt中找到这个字符串,这样我们就知道几个工具的用途,接下来就需要灵活应用来拆...
首先使用objdump -d bomb > bomb.asm命令生成反汇编文件。 先运行bomb文件,提示没有权限,我的文件是从windwos拷贝到Linux虚拟机中的,所以会报这个错误。执行chmod +777 bomb 赋予权限。如下图所示。 然后随便输入一些内容看下会有什么后果,如下图所示,提示已经爆炸。
首先,我们下载了lab的压缩包后,发现里面有一个c文件bomb.c和一个二进制文件bomb。 c文件里面并没有东西,它包含了phases.h的头尾文件,但是我们不能看到具体内容。我们可以看到一些phase文件,其实是要在bomb的反汇编文件中解决在phase段会引发的炸弹。(由于链接的作用,因此bomb中包含了phase.h) ...