Answers:
GNU binutilsstrip
的文档暗示了原因,但没有明确说明,在说明中--only-keep-debug
提到
注意-保留剥离部分的节标题,包括其大小,但节的内容将被丢弃。保留节标题,以便其他工具可以将debuginfo文件与实际的可执行文件进行匹配,即使该可执行文件已重定位到其他地址空间也是如此。
也就是说,除非通过该-R
选项明确告知,否则strip
将保留节头,以帮助其他程序(包括gdb
)完成其工作。
正确使用strip命令页面(使用Linux操作系统的反向工程的一部分)说明
strip
在可执行文件上运行命令是最常见的程序保护方法。在其默认操作中,该strip
命令从可执行文件中删除符号表和所有调试信息。这就是通常的用法。但是,仍有有用的信息不会被删除。
并列举了一些可能遗留的有用信息,用于分析“剥离的”可执行文件。
在“ 学习Linux二进制分析”中,重申了这一点,并指出通常只有在有人故意删除节标题时才丢失节标题,gdb
而没有节标题objdump
则几乎没有用。