ProGuard 4.7 混淆器详细使用教程

4星 · 超过85%的资源 需积分: 9 32 下载量 132 浏览量 更新于2024-07-25 收藏 1.02MB DOC 举报
"ProGuard4.7是一款强大的Java字节码混淆、优化、压缩和预校验工具,常用于减少应用程序的大小并提高其安全性。本文档是作者在研究和实践后编写的使用详细说明,主要关注图形化界面操作和配置文件的创建。" ProGuard的使用通常包括以下几个关键步骤: 1. **代码压缩(Shrinking)** Shrinking过程会删除未使用的类、字段和方法,以减小最终输出的JAR文件大小。在ProGuard GUI中,添加输入JAR作为要混淆的目标,同时指定输出JAR的位置。为了保持某些代码不被删除,需要使用`-keep`选项来指定。 2. **代码混淆(Obfuscation)** Obfuscation步骤将类名、方法名和字段名转换为简短的无意义的名称,增加逆向工程的难度。同样,在GUI中,启用混淆并设置保留规则。`-keep`选项可保护特定类、方法或字段不被混淆。`field`或`method`选项的`Don’t care`表示选择所有,而`Required`则只保留标记的项。 3. **代码优化(Optimization)** 除了混淆,ProGuard还可以对代码进行优化,删除冗余的类和方法,合并相似的代码等。同样需要`-keep`选项来防止优化过程中关键代码的丢失。 4. **预校验(Preverification)** 对于运行在Java Micro Edition (ME)或Android等平台的代码,预校验是必要的,以确保混淆后的代码能在目标平台上正确执行。 5. **处理警告和错误** 在混淆过程中可能会遇到各种警告和错误,例如输出JAR为空、缺少`-keep`选项等。这些错误需要根据具体情况进行解决,通常通过添加适当的保留规则可以消除。 6. **配置文件导出与执行** 最终,你可以导出配置文件,以便在命令行中重复使用。配置文件包含了所有设置,如`-injars`和`-outjars`指定输入和输出JAR,以及`-keep`规则。在命令行中,通过`java -jar proguard.jar @a.pro`来执行配置文件。 7. **特殊问题** 配置文件中的路径应为绝对路径或相对于当前目录的相对路径。在作者的例子中,`-injars`和`-outjars`分别指定了源JAR和混淆后JAR的位置。作者还提到一个问题,即混淆后的方法抛出的异常消失,这可能是由于优化过程移除了未使用的异常处理代码。解决这个问题可能需要更精细的`-keep`规则来保留异常处理。 在实际使用中,ProGuard的配置文件是关键,它定义了混淆、优化的具体行为。通过不断的试验和调整,可以得到满足特定需求的完美配置。对于开发者来说,理解并熟练掌握ProGuard的使用是提升应用安全性和性能的重要手段。