混淆利器proguard的用法

利用java编程,最头痛的就是代码的反编译,现在的反编译工具也比较多,只要一反编译,大部分都能被还原过来。这时候,用JAVA写的PROGUARD横空出世了,它集压缩、优化、混淆于一体。下面介绍一下它的简单用法。

先去官网http://proguard.sourceforge.net/ 下载一个版本

找到里面的examples文件夹,先看一下示例

其中在applications.pro文件里应有这么一句

java -jar progurad.jar @application.pro

其中最为关键的就是application.pro里的文件配置,只要这个文件配置合适了,执行一下这个语句即可。

打开这个.pro文件,可以看到里面的参数:

1、-injars //表示要进行混淆的class文件或jar、war等,可用文件目录表示,例如:

2、-injar ../jar(**.class) 或者-injar ../jar/in.jar

3、-outjars 表示要生成的jar包,后跟jar包名字,如:-outjars ../out.jar

4、-libraryjars 后面跟要编译in.jar的其它类包,如果是多个,用多行列出,如:

5、-libraryjars d:/1/2/1.jar

6、-libraryjars d:/1/2/2.jar

7、-libraryjars d:/1/2/3.jar

8、-libraryjars d:/1/2/4.jar

9、-keep 后跟项目的入口类,如:-keep public class gps.lip.LIPService{ public static void main(java.lang.String[])}

-keep 后还可以跟在项目中没有用到的类或方法,但在配置文件中有用到,如果不用该参数保留出来,在做优化时,就会直接的删除掉了,项目运行时会报找不到类的错误。

-printusage该参数是把优化时移除的类及方法记录下来,后跟一个文件。如:-printusage ./jar/deadCode.txt

其余的常用的参数,如:

10、-target 1.6 //指定版本号

11、-forceprocessing //强制执行,即使过期

12、-allowaccessmodification //指定,当执行修改方法或属性的modifer范围

13、-printmapping  //指定混淆后,类或方法生成的map,后跟指定的路径及文件名 *.map

14、-overloadaggressively //

15、-repackageclasses //把执行后的类重新放在某一个目录下,后跟一个目录名

16、-dontpreverify //不用预先检查

17、-verbose //不用输出详细的过程

18、-dontwarn//不用输出警告

19、-dontnote//不用输出通知

 

为了增加混淆的难度,可以在

java -jar progurad.jar @application.pro 后再加 -classobfuscationdictionary ./dictionaries/windows.txt

即java -jar progurad.jar @application.pro -classobfuscationdictionary ./dictionaries/windows.txt

这样生成的类名都是window系统命名系统严令禁止使用的文件名,反编译时就更增加难度了

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值