如何使用 Proguard 生成的 mapping.txt 反混淆 jar 文件?

How to deobfuscate jar file using mapping.txt generated by Proguard?

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

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

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

更新。我需要一个可以自动重命名所有 类、函数等的工具,因此我不必手动进行。谢谢

如果你有映射,那么你可以获得每个 class、字段和方法名称 back.You 可以使用 java-asm(一个字节码修改库)重新映射 class 和成员名称。大部分工作将更新成员描述符。

我自己做了一个,花了大约一天的时间才让它可靠地工作。

编辑:它并不完美,但非常接近。 Link 给它一个受保护的 jar 文件和映射,它会重命名它能找到的所有内容。有一些问题,但只要查看源代码,它就可以完成工作。只需将它生成的 jar (FileName + "-Re.jar") 转储到反编译器中,例如 Luyten/JD-GUI。此外,文件输入只能通过按钮更改。文本框仅适用于 visual-feedback/confirmation.

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

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

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

我建议使用 along with Enigma 中建议的 proguard 工具。您的问题的解决方案不是很简单,您需要使用可用工具的组合来解决它。