我可以替换 ELF 二进制文件中的字符串,如果它的长度更小或相等,但用更长的字符串替换时会发生段错误。为什么会出现段错误?还必须更改哪些其他内容才能正常工作?
最佳答案
I can replace a string inside an ELF binary if it is less than or equal length
根据您谈论的是完全链接的二进制文件(ET_EXEC
或 ET_DYN
)还是目标文件(ET_REL
),您的声明以上可能正确也可能不正确。
您不能安全地编辑完全链接二进制文件的 .dynstr
部分中的字符串,因为这样做会破坏动态符号哈希表。
but a segfault happens when replacing with a longer string.
你期待什么? ELF 二进制文件包含结构化数据。如果您破坏了该数据的结构,您应该会遇到各种问题。你很幸运你遇到了段错误。情况可能会更糟(例如,它可能会悄无声息地破坏您写入磁盘的数据)。
关于c - 十六进制替换为 ELF 二进制文件中更长的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10964795/