ProGuard 工具的使用

2023-06-12,,

最近工作中需要使用到 Proguard 这个加混淆的工具,现在总结一下这个工具的使用方法。
proguard 官方网站地址是
http://proguard.sourceforge.net/
由于proGuard 这个工具配置信息比较多,所以有时间在使用的时候一定要仔细阅读一下
http://proguard.sourceforge.net/#manual/introduction.html
这个页面的内容,里面会很多配置的参数有详细的说明
下载的地址在
http://sourceforge.net/projects/proguard/files/
如下图

目前的版本到 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包 如下图

《ProGuard 工具的使用.doc》

下载本文的Word格式文档,以方便收藏与打印。