我可以替换ELF二进制文件中的字符串,如果它具有更小或相等的长度,但是当用更长的字符串替换时会发生段错误。为什么会出现段错误?还有什么其他的东西必须改变才能起作用?
答案 0 :(得分:1)
如果长度小于或等于
,我可以替换ELF二进制文件中的字符串
根据您是在讨论完全链接的二进制文件(ET_EXEC
或ET_DYN
)还是目标文件(ET_REL
),您的上述声明可能正确也可能不正确。< / p>
您无法安全地编辑完全链接二进制文件的.dynstr
部分中的字符串,因为这样做会破坏动态符号哈希表。
但是当用更长的字符串替换时会发生段错误。
你期待什么? ELF二进制包含结构化数据。如果您破坏了该数据的结构,您应该期待各种的问题。你很幸运,你有一个段错误。它可能会更糟糕(例如,它可能会无声地破坏您在磁盘上写入的数据)。