proguard+jd-gui进行代码混淆保护

需求:防止编译后的.class文件被破解导致代码泄露。

下载Proguard

proguard是用来进行.class文件编译混淆的工具

https://sourceforge.net/projects/proguard/files/latest/download?source=files

目前下载的是:proguard5.3.5.zip

 

下载jd-gui

jd是用来进行.class文件反编译的工具,方便查看编译后的.class文件是否达到预期

http://jd.benow.ca/

在JD-GUI区域选择Download-> jd-gui-windows-1.4.0.zip

解压后直接双击jd-gui.exe使用


proguard的使用

proguard主要用到的是lib\proguard.jar和bat\proguardgui.bat

proguard.jar用来混淆.class文件的名称及内容

proguardgui.bat用来生成执行proguard.jar的pro文件,决定混淆的内容及格式

 

Pro文件生成

双击打开bat\proguardgui.bat


PS:如果已经有存在pro文件,可点击Load configuration…载入配置文件



点击Addinput…添加需要进行混淆的jar包

点击Addoutput…添加混淆后jar包的存放地址,指定一个目录即可

library中添加不进行混淆的jar包,默认添加jre的jar包

*注意:progurad中不支持war包的混淆,使用war包进行混淆后会丢失所有的.class文件,所以需要将war包导出jar包进行混淆后,再使用压缩文件将混淆后的.class文件放入war包中。使用maven生成的war包可在pom.xml文件中修改<packaging>war</packaging>为<packaging>jar</packaging>,然后进行maven build生成jar包。







以上步骤根据需求进行选择,目前选择的都是一些基本选项



最后点击Saveconfiguration…保存配置,一般以.pro格式结尾

proguardgui并不适合用来执行脚本,最好还是使用cmd窗口来执行脚本

生成后的pro文件需要进行一些修改才能执行成功

基本需要修改的是一些固定使用的class名称及方法名,配置在.xml文件中的所有包名等。

enum相关的代码也需要设置不混淆。


执行proguard.jar

java –Xms1024m –Xmx2048m –jar proguard5.3.3\lib\[email protected] > run-service.log

注意修改proguard.jar和pro文件的路径

一些参数:

-dontusemixedcaseclassnames:Windows必须设置的参数,混淆后的class文件名不使用大小写区分

-keep class java.**{*;}:不混淆所有java开头的包名下的所有class文件

-keepclasseswithmembernames class com.xxx.x{public<methods>;}:不混淆x文件的public方法名,*表示不混淆所有内容

com.xxx.xxx$*{}:不混淆内嵌类


问题:

1、 执行proguard脚本时异常,查看log输出【Theoutput seems up to date】,是由于JDK版本问题,添加【-target1.7】后执行成功。

2、 执行脚本时闪退,可能是jdk版本的问题,更改到1.8执行成功后再更改到1.7执行。

3、 还有一些奇奇怪怪的问题,比如说混淆的jar包内的jar包还引用了其他jar包,就无法控制它不进行混淆,就需要找开发帮忙把第二层jar包依赖的jar包提取到同等级中。(可能描述的不是很清楚)

4、实在定位不到的问题只能使用排除法进行定位……


将所有需要用到的jar包混淆完后,重新导出war包进行替换。

注意所有有关系的jar包都需要一起进行混淆,这样它就会自动将有关联的内容统一混淆。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开发框架,用于简化基于Java的应用程序的开发和部署。它提供了一个自动化配置的方式来简化开发过程,同时也提供了一些常用的功能模块,如安全、数据库连接等。 ProGuard是一个代码混淆工具,用于保护Java代码免受逆向工程和代码分析的攻击。它通过对代码进行优化和混淆,使得反编译后的代码难以理解和修改,从而增加了代码的安全性。 Maven是一个项目管理工具,用于构建、发布和管理Java项目的依赖关系。它可以帮助我们方便地管理项目的依赖关系,包括第三方库和插件。同时,它还提供了一些命令和配置,来支持多模块的项目结构。 在使用Spring Boot、ProGuard和Maven实现代码混淆时,我们可以按照以下步骤进行操作: 1. 在Maven中创建一个多模块的项目结构。通过使用Maven的父子项目关系,我们可以在一个主项目中管理多个子模块。 2. 在子模块中引入Spring Boot和ProGuard的依赖。在子模块的pom.xml文件中,添加对Spring Boot和ProGuard的相关依赖配置。 3. 配置ProGuard混淆规则。在子模块中创建一个proguard.cfg文件,并添加相关的混淆规则。这些规则可以用于指定哪些类、方法和字段需要进行混淆,以及如何进行混淆。 4. 在Maven的构建过程中,添加对ProGuard的插件配置。通过对Maven的插件进行配置,使得在构建项目时自动应用ProGuard混淆规则。 5. 构建和执行项目。在Maven中使用命令进行项目的构建和执行,观察代码是否已经被混淆。如果一切顺利,你将会得到一个经过混淆代码。 综上所述,通过使用Spring Boot、ProGuard和Maven,我们可以实现对Java代码混淆保护。这种方式可以增加代码的安全性,防止代码被逆向工程和代码分析的攻击。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值