如何使用Proguard生成的mapping.txt对jar文件进行反混淆处理?

时间:2016-03-27 09:17:04

标签: java android proguard deobfuscation

这可能听起来很可疑,但我需要反欺骗我自己的应用。前段时间我发布了我的应用程序,我与Proguard混淆了。不幸的是,我没有保存该应用程序版本并且更改了代码。

现在我需要旧版本的代码。 我仍然有Proguard生成的mapping.txt 文件。

我已将classes.dex文件转换为jar(使用dex2jar工具),现在我需要根据mapping.txt对其进行反混淆处理。有什么工具可以帮助我吗?也许是Proguard本身?

UPD。我需要一个可以自动重命名所有类,函数等的工具,所以我不必手动完成。谢谢

2 个答案:

答案 0 :(得分:8)

如果您有映射,则可以返回每个类,字段和方法名称。您可以使用java-asm(字节码修改库)重新映射类和成员名称。大部分工作将更新成员描述符。

我为自己制作了一个,并且花了大约一天才能让它可靠地工作。

编辑:它并不完美,但它非常接近。 LinkScreenshot of the GUI给它一个proguarded jar文件,映射,它将重命名它可以找到的所有内容。有一些问题,但只是看看它应该做的工作。只需将它制作的jar(FileName +“ - Re.jar”)转储到Luyten / JD-GUI等反编译器中。此外,文件输入仅通过按钮更改。文本框仅用于视觉反馈/确认。

编辑2:修复了当给定jar中不存在映射中的类条目时发生的NPE。

编辑3:修复了许多导致方法无法重命名的问题。

编辑4:将已编译的jar上传到github (发布,在zip文件中,它位于映射工具中),添加了对多种映射类型的支持。

答案 1 :(得分:3)

我建议使用above answer中建议的proguard工具和Enigma。您的问题的解决方案可能非常简单,您需要使用可用工具的组合来解决它。