1

如果 ELF 二进制文件中的字符串长度更小或相等,我可以替换它,但是在替换为更长的字符串时会发生段错误。为什么会出现段错误?还必须更改哪些其他内容才能正常工作?

4

1 回答 1

1

如果它小于或等于长度,我可以替换 ELF 二进制文件中的字符串

根据您是在谈论完全链接的二进制文件(ET_EXECET_DYN)还是目标文件(ET_REL),您上面的陈述可能正确,也可能不正确。

您不能安全地编辑.dynstr完全链接二进制文件部分中的字符串,因为这样做会破坏动态符号哈希表。

但是用更长的字符串替换时会发生段错误。

你期待什么?ELF 二进制文件包含结构化数据。如果您破坏了该数据的结构,您应该会遇到各种问题。你很幸运,你有一个段错误。它可能会更糟(例如,它可能默默地破坏了您在磁盘上写入的数据)。

于 2012-06-09T23:17:17.343 回答