我已经在Android ELF二进制文件中对字符串进行了十六进制编辑。
现在,它将无法运行,并给出错误消息Cannot LINK EXECUTABLE,这可能是由于校验和错误所致。

有人有修复校验和的工具吗?

评论

您是否用SAME SIZE字符串替换了ELF中的字符串,或者添加了不同数量的字节?您可以通过用相同大小的字符串替换此字符串并执行它来测试概念吗?

这实际上是Android ELF文件吗?

可以附加文件的objdump -x和readelf -a的输出吗?

这是一个Android ELF。

#1 楼

ELF本身未指定任何类型的校验和。您的链接错误很可能是由于编辑不正确而更改了文件中的某些偏移量。如果不调整偏移量,则必须用不超过原始字符串的字符串替换字符串,并且除非有已知的可用松弛空间,否则不能添加新字段。

使用readelf -a检查ELF文件头,然后将新旧文件进行比较。

评论


不是我编辑的字符串,而是一个具有相同名称的符号名称:-O。不幸的是,我没有检查常量是否在文件中多次出现。

–user1636717
13年4月11日在9:07

#2 楼

我建议您为所有ELF乐趣使用HT编辑器。


HT是可执行文件的文件编辑器/查看器/分析器。目标是将调试器的低级功能与IDE的可用性相结合。我们计划实现所有(十六进制)编辑功能,并支持最重要的文件格式。


这就是要这样做的原因。
当然还有其他工具。

评论


您还能解释一下如何使用THE修复校验和吗?

–和
13年4月10日在17:52

不知道user1636717到底说了什么校验和,这就是为什么我问它是哪种ELF

–0xea
13年4月10日在20:52