proguard使用指南.doc

ProGuard是一款强大的Java字节码混淆、优化、压缩和预校验工具,广泛应用于Android开发中,用于保护应用程序代码免受逆向工程攻击。本文将详细介绍如何使用ProGuard及其混淆原理。 ### ProGuard的下载与安装 1. **下载**:ProGuard可以从官方网站[http://proguard.sourceforge.net/](http://proguard.sourceforge.net/)获取最新版本。 2. **安装**:下载完成后,解压缩文件,找到`lib`目录中的`proguard.jar`,将其复制到您自定义的工作目录中。 ### ProGuard的配置与使用 1. **准备依赖**:将需要混淆的JAR文件及它们依赖的所有库文件放置在同一工作目录中。 2. **编写配置文件**:创建一个配置文件,例如`proguard.cfg`,并指定以下参数: - `-injars`:指定输入的JAR文件。 - `-outjars`:指定混淆后的输出JAR文件。 - `-libraryjars`:列出所有依赖的库JAR文件。 - 其他选项:例如`-printmapping`用于生成映射文件,`-overloadaggressively`开启重载优化,`-defaultpackage`设定默认包名,`-allowaccessmodification`允许修改访问权限,`-dontoptimize`禁止优化,`-keep`规则保留特定类或方法。 示例配置文件内容如下: ```properties -injars TheFirstDesktopApplication1.jar -outjars TheFirstDesktopApplication1_out.jar -libraryjars <java.home>/lib/rt.jar -libraryjars appframework-1.0.3.jar -libraryjars swing-worker-1.1.jar -printmapping proguard.map -overloadaggressively -defaultpackage '' -allowaccessmodification -dontoptimize -keep public class * { public protected *;} -keep public class org.** -keep public class it.** ``` 3. **运行ProGuard**:在命令行中切换到配置文件所在目录,输入以下命令执行混淆: ``` java -jar proguard.jar @proguard.cfg ``` 4. **检查结果**:混淆完成后,会在工作目录中生成混淆后的JAR文件。使用反编译工具(如JD-GUI)查看,会发现原本的类和方法名被替换为无意义的字母,这增加了逆向工程的难度。 ### ProGuard混淆原理 混淆的主要目标是减少代码可读性,提高反编译的难度。混淆器主要执行以下操作: 1. **删除调试信息**:去除源文件名、行号、字段名、方法名、参数名和局部变量名等,以降低逆向工程的可能性。 2. **重命名类、方法和字段**:用a、b、c等无意义的字符序列替换原有名称,使代码难以理解。 3. **优化代码**:通过消除冗余代码、合并相似方法等手段,进一步减小代码体积,同时不影响程序功能。 4. **压缩代码**:删除未使用的类、字段和方法,减小JAR文件大小。 5. **预校验**:对于Android应用,预校验确保混淆后的代码能在Dalvik虚拟机上正确运行。 混淆后,尽管代码变得难以阅读,但程序的功能保持不变,除了异常堆栈跟踪所需的类名、方法名和行号。 ProGuard作为一款强大的混淆工具,能够有效地保护Java和Android应用的源代码,防止未经授权的逆向工程分析。正确配置和使用ProGuard,是提升软件安全性和隐私保护的重要手段。
























- wxl1832013-01-06内容有点少,不过还算有点用吧。
- gforc2012-06-21中文的,好的,就是太简单了
- dyxtb2014-02-19挺好,挺实用。篇幅少了点,不过能弄清楚了
- dyfvicture2012-09-01内容有点少,不过帮了大忙,谢谢

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于大数据下工程造价管理探究.docx
- 论GIS在环境管理及评价方面的应用.docx
- 第十二章第2讲基本算法语句.ppt
- JAVA课程方案设计书(周永新201190483).doc
- 计算机基础教学深度初探.docx
- 平面研究分析报告需要学哪些软件.doc
- 提高计算机通信网络可靠性的研究.docx
- 计算机应用软件要点问题的思考体会.docx
- CAD制图技术在机械工程中的开发与应用.docx
- 实验3:ucosII实时操作系统.doc
- MyEclipse内置的CVS客户端进行项目管理版本控制.doc
- Oracle数据字典.docx
- 基于项目教学法的初中计算机综合实践教学思考.docx
- Git高级技巧大全之深入实践基础教程
- 互联网+理财:应该选择量化、大数据还是AI?.docx
- 化工自动化及仪表之执行器培训.ppt


