标签:
PHASE_1
使用到的命令:
objdump -t bomb | less
我们得到的bomb文件是一个二进制文件,使用 objdump 可以得到反汇编的代码;
-t 表示生成符号表,不必关注 . 开头的内容,可以看到phase_1/phase_2/.../phase_6,显然应该是对应不同的关卡;
| less 表示使用一种方便浏览的分页方式,可以使用对应的快捷键辅助浏览。
objdump -d bomb > bomb.txt
-d将需要执行的内容生成反汇编代码。
chmod 777 bomb
赋予文件的读写及可执行权限,避免出现permission denied。
gdb bomb
用gab打开文件
break explode_bomb
可以在函数名、行号等地方设置断点
run
执行被gdb打开的文件
disas
显示当前函数的反汇编代码
info registers
查看当前寄存器使用情况
print $eax
输出一个寄存器的内容
x/s $eax(或是一个内存地址如0x12314)
x 命令表示访问相应地址下的内容,/s是可选项,表示这个地址的内容是string
stepi x
单步执行,可以跟一个可选参数表示单步执行x次,默认是一次。执行后再使用disas可以看到箭头指示的当前指令有所变化。
对于这关:
查看到phase_1的反汇编代码之后可以判断出检查方式是使用strings_not_equal这个函数接受两个参数,判断输入命令和答案是否一致,其中对答案所在的地址直接使用x/s就可得到答案,使用shift+ctrl+c/v在终端下复制黏贴答案。
标签:
原文地址:http://www.cnblogs.com/autoria/p/5613663.html