【发布时间】:2016-12-24 02:37:07
【问题描述】:
在没有符号信息的情况下,如何使用 GDB for x86 汇编代码设置断点,即无法写入b *_start。
我想立即停止执行,但是写b *0 不是很有用,因为这会在地址0 处停止执行,但我需要在地址x 相对于起点中断执行(不存在符号信息时未知)。
【问题讨论】:
-
可执行文件是否可读?然后你可以使用例如获取它的入口点。
objdump -f. -
实际上,我正在尝试调试一个通过修改更改其入口点的可执行文件,以便执行从无标签开始。
-
您说:“通过修改更改其入口点的可执行文件”。那么这个程序确实有一个已知的入口点吗?如果不是,如何执行?
-
好吧,在这种情况下,Microsoft PE EXE 的可执行文件在其标头中更改了其入口点字段,因此执行从一个特定但相当随意的地址开始,没有任何标签支持。跨度>
-
@NicolasLykkeIversen:对,所以使用一个工具,它会从文件元数据中显示入口点的数字地址,并使用
b *0x...(复制/粘贴地址,所以你在入口点)。这就是马克告诉你如何处理objdump。
标签: debugging x86 gdb nasm gnu