使用Proguard5.2混淆JAVA WEB工程

最近开发了一个JAVA WEB系统,为了保护项目组成员的劳动成果,决定使用Proguard对项目进行混淆处理,在混淆处理过程中,遇到一些问题,在此做个总结,希望可以帮到大家。
基础的就不说了,网上很多教程,直接上图说明我是如何进行WEB项目混淆的。
1:先将WEB项目下的WEB-INF/classes目录中编译好的需要混淆类或包打成jar包,打jar包时要注意按照包的路径层层建目录,即jar包中第一级目录应该是com目录,WEB项目中action,interface,javaBean等类不能混淆,我主要是混淆了Service层和Dao层的代码,打包好的文件名ITeyeTestSource.jar。
2:打好jar包后,运行proguard5.2.1\bin\proguardgui.bat脚本,打开proguard的图形界面,如下图:
[img]http://dl2.iteye.com/upload/attachment/0119/3653/a1c78b07-2112-3326-854f-ca61fea43028.gif[/img]

3:点击Next下一步进行配置,上面一个框中的Add Input按钮是选择需要被混淆的包,就是我们刚刚打包好的ITeyeTestSource.jar,Add Output是指定混淆成功后输出包的目录和文件名,此处我设置为ITeyeTestDest.jar。下面一个框中的Add是指定混淆ITeyeTestSource.jar需要依赖的jar包或者其它的Class文件,可以将相关jar包及class文件(以com目录根目录)放入到一个目录中,然后通过Add按钮指定该目录。除了项目相关的jar包外,JDK中的RT.jar是必须的,如下图:
[img]http://dl2.iteye.com/upload/attachment/0119/3659/a0ab99f6-feb6-358e-a58f-bac8e549da1a.gif[/img]

4:点击Next,该页面基本上保持默认设置,不要勾选Shrink需要将红框中两个复选框去除,否则就可能出现所有的类名都不会被混淆,但类里面的字段和方法名会被混淆。如果需要保持某些接口或类不被混淆,点击下面的Add进行设置,也可以通过手写的方式进行设置,基本语法如下:


#保持接口IUserServices名称不被混淆,但里面的字段名称和方法名称会被混淆
-keep interface com.iteye.service.IUserServices
#保持接口IUserServices名称不被混淆,包括字段和方法
-keep interface com.iteye.service.IUserServices{
<fields>;
<methods>;
}
#保持类UserServices名称不被混淆,但里面的字段名称和方法名称会被混淆
-keep class com.iteye.service.UserServices

#保持所有继承IUserServices的接口不被混淆,包括接口中字段和方法
-keep interface * extends com.iteye.service.IUserServices {
<fields>;
<methods>;
}
#保持com.iteye包及其子包下所有接口名称不被混淆,包括接口中字段和方法
-keep interface com.iteye.** {
<fields>;
<methods>;
}


图片:
[img]http://dl2.iteye.com/upload/attachment/0119/3670/02d92c74-6c1d-3841-a165-979ec7a2b481.gif[/img]

5:点击Next,后续的页面设置基本保持默认就好,最好不要勾选Optimize选项,否则可能会运行出错。proguard进行混淆后,生成的jar包不能直接放入到项目里面运行,需要先用JAVA的JAR命令解压出来,
jar -xvf ITeyeTestDest.jar  
然后重新打包
jar -cvf ITeyeTestDest.jar  * 
才可以运行。

6:使用Spring @Resource注入时,最好使用@Resource(name = "xxx")即byName的注入方式。如果使用byType,再代码混淆后,因为注入的属性名已经和原来Spring实例化的Bean名不一致,会导致注入失败,在项目开发阶段就需要规范。

7:附上proguard的项目主页:[url]http://proguard.sourceforge.net/[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值