您需要保存图像才能阅读图像中的说明
好吧,这就是问题所在。我正在使用炸弹,只是因为杀戮时间而且我遇到了问题
objdump和gdb的不同汇编代码生成。
我的笔记本电脑正在运行64位Ubuntu 14.04 LTS和
我已经安装了32位glibc来处理bomblab。(因为它是用32位环境编译的)
好吧,首先这些符号没有显示,我真的不知道gdb正在吐出什么。
有人可以解释一下发生了什么吗?
答案 0 :(得分:1)
当您在phase_2
处放置断点时,gdb
修补正在运行的图像,将int3
指令放在0x8048b50处,就在phase_2
的函数序言之后完成了堆栈框架的设置。而不是
0x8048b50: 8b mov edx,DWORD PTR [ebp+0x8]
0x8048b51: 55
0x8048b52: 08
你现在有
0x8048b50: cc int3
0x8048b51: 55 push ebp
0x8048b52: 08 first byte of an 'or' instruction
这就是gdb
正在显示的内容。最终事情会重新同步,disassemble
命令会开始显示正确的指令序列。
显示内容的差异不会影响程序的正确执行;在从断点开始之前,gdb
将把该8b字节放回图像中,或者它将合成执行mov
指令,然后继续执行0x8048b53。