这个 bomb 是 Couresa 上面的一门课The Hardware/Software Interface中第四章的一个实验。同时也是CSAPP里面的一个作业。花了1天时间把这个做了。期间主要是用到了gdb,objdump 的一些知识,当然还有一些汇编的基础知识,比如说在 64 位系统下,参数通过rdi,rsi,rdx,rcx,r8,r9 传递,返回值在 rax中。其他的利用 gdb 差不多就可以完成了[这里只讲前五个关卡,不包括后面的附加关卡和隐藏]。首先我们不知道任何有关 bomb 的输入,所以直接 gdb 运行即可,随便输入看看程序需要什么[下面所有红色的斜体字表示命令]。一: 运行gdb bomb。然后在 gdb 的命令行里面执行b phase_1。然后运行程序,会发现程序停在那,等你输入,这个时候随便输入一些字符即可。然后发现程序执行到了 phase_1 处,利用 gdb 的命令 disas 反汇编指令查看 phase_1 函数的汇编语句,如下所示=>0x0000000000400e70<+0>:sub$0x8,%rsp0x0000000000400e74<+4>:mov$0x401af8,%esi0x0000000000400e79<+9>:callq0x40123d0x0000000000400e7e<+14>:test%eax,%eax0x00000000004
...
继续阅读
(77)