【发布时间】:2013-12-27 20:05:55
【问题描述】:
我需要在 Android APK 中修改一个 so。 任务是重命名so侧的动态符号(即函数名)。
例如,从 Java_com_example_abc_.... 更改为 Java_com_yahoo_zzz_....
我尝试用WinHex直接搜索替换文本单词,apk启动出错。 似乎 .hash 部分也需要更新,但我不知道如何更新 .hash 部分。
我的问题是重命名动态符号的正确或可取的方法是什么?
我已经卡了3天了,请帮帮我,非常感谢!
发现一个帖子可能相关,但他没有给出替代解决方案。 https://sourceware.org/ml/binutils/2006-03/msg00266.html
【问题讨论】:
-
唯一的办法是更新你的.so lib的源代码并再次编译
-
@pskink 嗯,我现在迷路了。我要修改的so文件来自另一个文件,该文件已经从原始so中修改过。所以我很确定这是可行的,但不知道如何。顺便说一句,只需要更新函数名(符号)。
-
你怎么知道.so已经被别人修改了?
-
@pskink 我从官方包中提取了.so,也从修改后的包中提取了.so。然后使用超越比较来比较十六进制值。我已经上传了diff的截图,请查收。linki40.tinypic.com/2a8qgxw.jpg
-
@artlessnoise objcopy --redefine-syms ?没有效果,网上搜索有人说只是重新定义了序数符号而不是动态符号。
标签: android arm reverse-engineering elf apk