java jar包 混淆_ProGuard对java jar包实现混淆加密

Java代码编译后生成的.class 中包含有源代码中的所有信息(不包括注释),所以按照正常方式编译的Java .class文件可以很轻易地被反编译。通常情况下,反编译可以利用现有的工具jd-gui.exe或者jad.exe。

有些情况下,为了保护java源码不被别人看到,通常会使用加密手段对java源码进行加密,加密的方式可以利用加密工具(比如java代码混淆工具)、使用加密算法(如DES算法)修改classloader对编译好的.class文件进行加密。(注:这里推荐一款java代码混淆器,可以混淆函数变量、类、方法名以实现代码加密:ProGuard)

本文使用ProGuard对java代码进行加密:

(1)解压下载的ProGuard,解压后进入lib文件把proguard.jar拷贝到自己新建的文件夹里如图。

117797627_1_20171201032636661

(2)把需要混淆的jar和jar所依赖的包也放到新建的文件夹,都放在一起,如下图。

117797627_2_2017120103263752

(3)修改配置文件,配置文件名称自己定,例如”proguard.pro”,举个简单配置文件例子(那个proguard.map是之后自动生成的)

内容如下,其中-injars:是你需要混淆的jar,-outjars:是你混淆后输出的jar,-libraryjars:是你混淆的jar需要所依赖的jar包(具体的参数设置可以参考proguard文档,配置文件可以参考文档来对自己混淆的需求来写配置文件)。

-injars       ProGuardDemo_20150502.jar

-outjars      ProGuardDemo_20150502_fusion.jar

-libraryjars  C:/Program Files/Java/jdk1.6.0_35/jre/lib/resources.jar

-libraryjars  C:/Program Files/Java/jdk1.6.0_35/jre/lib/rt.jar

-libraryjars  C:/Program Files/Java/jdk1.6.0_35/jre/lib/jsse.jar

-libraryjars  C:/Program Files/Java/jdk1.6.0_35/jre/lib/jce.jar

-libraryjars  C:/Program Files/Java/jdk1.6.0_35/jre/lib/charsets.jar

-libraryjars  C:/Program Files/Java/jdk1.6.0_35/jre/lib/ext/dnsns.jar

-libraryjars  C:/Program Files/Java/jdk1.6.0_35/jre/lib/ext/localedata.jar

-libraryjars  C:/Program Files/Java/jdk1.6.0_35/jre/lib/ext/sunjce_provider.jar

-libraryjars  lib/log4j-1.2.17.jar

-printmapping proguard.map

-overloadaggressively

-repackageclasses ''

-allowaccessmodification

-keep class com.hiekn.wzh.ProGuardTest{*;}

(4)保存配置文件保存到你的文件夹下,如下图。

117797627_3_20171201032637224

(5)运行,输入cmd,进入你建的文件夹下,如下图。

117797627_4_20171201032637458

(6) 输入命令进行jar包混淆,命令为:java -jar proguard.jar @proguard.pro,如下图。

117797627_5_20171201032637552

(7) 混淆成功,生成ProGuardDemo_20150502_fusion.jar包,如下图。

117797627_6_20171201032637833

(8)混淆器后,利用反编译器jad对jar进行反编译,多了好多a,b,c之类的类文件,对反编译的java文件是很难编译的,即说明混淆成功。

117797627_7_20171201032638114

最后,总结一下,虽然使用ProGuard对jar包混淆成功,但是使用jad进行反编译后,依然还是可以看到源码,所以我们应该考虑使用加密算法对java源码进行源码加密,后面的博客再细细介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值