替换dex文件中的字符串

时间:2015-09-28 19:31:20

标签: android dex

我需要替换dex文件中的字符串。也就是说,我需要一个工具(免费和开源),它接收dex文件,字符串索引和新的字符串值作为输入参数,并生成新的(修补的)dex文件。

自己写作不应该太难,但也许有一种工具可以完全满足我的需要并且可以节省我的时间。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

我不知道现有的端到端解决方案。你最好的选择是使用dexlib2。特别是,DexRewriter类是如何进行这种替换的一个很好的例子,尽管它不直接支持字符串替换。

我认为修改字符串表中的字符串实际上并不是你想要的。请记住,字符串可用于dex文件中的许多内容:字符串常量,方法名称,字段名称,类名等。如果您只想更改字符串常量,则需要查找并替换所有字符串该字符串用作字符串常量的实例。如果您尝试替换该字符串的所有实例,则最终可能会无意中修改字段名称等。

答案 1 :(得分:1)

可能有点迟到回答,但希望其他遇到此问题的人可以从中受益。黑貂烟灰库(https://github.com/sable/soot)提供修改Android APK文件代码的工具。一旦设置了库,那么换掉一个字符串也不错。