`
daoyongyu
  • 浏览: 125515 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用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的图形界面,如下图:


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


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>;
}


图片:


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的项目主页:http://proguard.sourceforge.net/


  • 大小: 310 KB
  • 大小: 141.9 KB
  • 大小: 172.6 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java代码混淆工具proguard5.2

    ProGuard是一款免费的Java类文件压缩器、优化器和混淆器。它能发现并删除无用类、字段(field)、方法和属性值(attribute)。它也能优化字节码并删除无用的指令。最后,它使用简单无意义的名字来重命名你的类名、...

    springboot工程(单个maven工程)利用proguard实现代码混淆 java demo案例

    Spring Boot作为Java领域广泛使用的微服务框架,其工程结构通常包含敏感信息和业务逻辑,因此,对代码进行混淆处理可以有效防止逆向工程攻击,同时也能优化应用的运行效率。ProGuard是一款强大的Java类文件混淆、...

    一步步教你使用Proguard混淆Java源代码 .docx

    Proguard 是一款功能强大且广泛使用的 Java bytecode 混淆工具,它可以保护 Java 代码免受反编译和逆向工程的攻击。下面将一步步指导如何使用 Proguard 混淆 Java 源代码。 1. 下载 Proguard 首先,需要从 ...

    MavenWEB项目使用ProGuard进行混淆,最佳解决方案.docx

    Maven WEB 项目使用 ProGuard 进行混淆,最佳解决方案 本文主要介绍了如何使用 ProGuard 对 Maven WEB 项目进行混淆,解决了 WEB 项目中混淆的难题。文章首先介绍了混淆的必要性,然后详细介绍了 WEB 项目的结构和 ...

    J2EE-web工程ProGuard代码混淆

    【J2EE-web工程ProGuard代码混淆】是Java开发中的一种安全实践,旨在保护应用程序的源代码不被轻易反编译和理解。ProGuard是一款强大的Java字节码混淆、优化、压缩和预校验工具,它能将Java字节码转换成更难阅读和...

    实现maven管理的Javaweb项目的proguard代码混淆功能

    本文将深入探讨如何在Maven管理的Java Web项目中集成ProGuard工具来实现代码混淆功能,以及在过程中可能遇到的问题及解决方案。 首先,让我们了解什么是ProGuard。ProGuard是一个开源的Java字节码混淆器、优化器和...

    使用Proguard混淆Java源代码

    java代码很容易被反编译,可通过混淆技术来保护源码,此处我们应用开源项目proguard来进行混淆。操作使用详见:http://blog.csdn.net/odian1/article/details/8282799

    proguard5.2.1java代码混淆工具

    proguard5.2.1java代码混淆工具,混淆文档参照 http://download.csdn.net/detail/zysap/9684388

    proguard混淆打包工具

    proguard混淆打包工具proguard混淆打包工具proguard混淆打包工具

    Proguard混淆Web项目(Spring+Struts2+Mybatis)

    1. **代码混淆**:Proguard的主要功能之一就是混淆代码,即将类名、方法名和变量名转换为难以理解的短名称,以此来防止逆向工程,提高代码的安全性。在描述中提到的映射map文件,记录了混淆前后的名称对应关系,这...

    ProGuard工具包,Java代码混淆

    **ProGuard工具包详解——Java代码混淆** 在Java开发中,为了提高应用程序的安全性和保护知识产权,开发者常常会使用一种称为“代码混淆”的技术。ProGuard是Android和Java平台上的一个强大的开源工具,它能实现...

    proguard界面混淆版

    在本篇文章中,我们将深入探讨ProGuard的GUI版本,即“proguard界面混淆版4.2”,以及它如何帮助开发者处理JAVA程序的混淆工作。 首先,我们需要理解混淆的概念。混淆是将原始的、易于理解的代码转换为难以解读的...

    java代码混淆工具proguard及教程讲解

    java代码混淆工具 简单使用docx 字典文件 生成的配置示例

    android proguard5.3.3混淆包

    android proguard5.3.3混淆包 替换Jar包以后使 混淆的类名方法名变成空白 使用方法 直接 替换 5.3.3版本的 混淆jar包 Mac 路径为 Contents/gradle/m2repository/net/sf/proguard/proguard-base Win gradle/m2...

    Java防编译技术---proguard混淆器

    ProGuard是一款开源的Java字节码混淆、优化、压缩和预校验工具,它能帮助开发者有效地减少应用的体积,同时增强代码的安全性,防止恶意逆向工程。 首先,我们要理解混淆的主要目的。混淆是将源代码中的类名、方法名...

    ProGuard-java混淆加密

    ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。  1. 压缩(Shrink):在压缩处理这一步中,用于检测和删除没有使用的类,字段,方法和属性。  2. 优化...

    SpringBoot + proguard+maven多模块实现代码混淆

    使用 proguard 混淆代码只能增加阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。 springboot多maven工程结构:proguard-root 是顶级父工程,...

    利用混淆器ProGuard混淆java类,防止反编译

    本篇将详细讲解如何使用混淆器ProGuard来混淆Java类,以增加反编译的难度,从而保护你的知识产权。 ProGuard是一款开源的Java字节码混淆、优化和预校验工具。它能够重命名类、方法和字段,使其变得难以理解,同时还...

    proguard程序混淆器

    ProGuard是一款强大的Java字节码处理工具,主要功能包括代码混淆、优化、压缩和预校验。它被广泛应用于Android应用开发中,用于保护源代码的安全性和减小程序体积,提高运行效率。在J2ME(Java 2 Micro Edition)...

    springboot工程(单个maven工程)利用proguard实现代码混淆

    基于springboot搭建一个简单案例,利用proguard插件实现代码混淆,增加源代码的阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。 ProGuard 是一个...

Global site tag (gtag.js) - Google Analytics