最近工作中需要使用到 Proguard 这个加混淆的工具,现在总结一下这个工具的使用方法。
proguard 官方网站地址是
http://proguard.sourceforge.net/
由于proGuard 这个工具配置信息比较多,所以有时间在使用的时候一定要仔细阅读一下
http://proguard.sourceforge.net/#manual/introduction.html
这个页面的内容,里面会很多配置的参数有详细的说明
下载的地址在
http://sourceforge.net/projects/proguard/files/
如下图
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站建设、成都外贸网站建设、新兴网络推广、小程序制作、新兴网络营销、新兴企业策划、新兴品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供新兴建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
目前的版本到 5.0 beta版,但是稳定版本是在 4.11 版本,将5.0 beta版本下载以后
在解压缩下的文件夹下应该就有lib这个文件夹了,如果没有的话就需要自己编译一下,具体编译方法,需要到build文件夹下,执行一下 build.sh 这个sh文件即可
找到一个 jar包,然后进入到lib文件,发现这下面有3个jar包,分别是
proguard.jar 命令行的jar包,需要结合 .pro 文件作为配置文件来执行相应的命令
proguardgui.jar 显示界面的jar包,可以图形化的生成混淆的jar包,具体运行方法 执行项目目录下的 bin/proguardgui.sh 这个文件,出现图形化界面,然后再一步一步的操作
retrace.jar 这个暂时没有看
现在测试一下 proguard.jar 这个jar包的使用方法,在项目目录下有个example 这个文件夹,里面有很多.pro 文件,其实就是对于要生成的各种混淆的程序的配置文件,目前比较火的肯定是android 的应用加混淆了,现在android应用加混淆的功能本身已经集成到 adt中了,但是如果我们撇开adt 直接使用 proguard.jar 混淆jar包。
一 首先你需要有一个 jar包
android apk应用编译完成的对于虚拟机可执行的文件是dex文件,这里需要使用一个 dex2jar的工具将dex转换成 jar包,再在lib这个文件夹下面建立一个bin文件夹和 libs文件夹,然后将前面用dex2jar 生成的jar包拷贝到 bin这个文件夹下面,然后将这个jar包解压缩到一个bin文件下的一个
名字为 classes的文件夹
二 将项目目录下的example文件夹下的 android.pro 拷贝到 lib目录下
前面为何要将要混淆的jar包解压缩到 classes这个文件夹下呢,打开android.pro这个文件后就知道答案了
-injars bin/classes //表示要混淆的classes文件夹
-injars libs //表示混淆的classes文件夹需要引用的外部libs,其是也是一个一个jar包
-outjars bin/classes-processed.jar //输出的混淆后的jar包
表示这个dex依赖的android.jar包,这个要根据你编译这个dex使用的sdk来选择相应的外部jar包的
-libraryjars /root/android/adt-bundle-linux-x86_64-20131030/sdk/platforms/android-19/android.jar
显示出来混淆的过程文件的选项
-printmapping bin/classes-processed.map
后面有很多跟android 应用相关的 混淆规则,这里不再一一赘述了
三 执行命令
root@ubuntu:/home/Proguard/proguard5.0beta2/lib# java -jar proguard.jar @android.pro
ProGuard, version 5.0 beta2
Reading program directory [/home/Proguard/proguard5.0beta2/lib/bin/classes]
Reading program directory [/home/Proguard/proguard5.0beta2/lib/libs]
Reading library jar [/root/android/adt-bundle-linux-x86_64-20131030/sdk/platforms/android-19/android.jar]
Preparing output jar [/home/Proguard/proguard5.0beta2/lib/bin/classes-processed.jar]
Copying resources from program directory [/home/Proguard/proguard5.0beta2/lib/bin/classes]
Copying resources from program directory [/home/Proguard/proguard5.0beta2/lib/libs]
在 /home/Proguard/proguard5.0beta2/lib/bin/ 文件夹下面看,出现加过混淆的jar包 如下图