jar包混淆和防反编译工具proguard使用简介

平时都是用java语言做开发,特殊情况下,需要对编译出的jar包混淆,防止被轻易的反编译出来看到源码,用的proguard工具,下面简单记录一下工具使用过程。

1、下载程序包,可以去https://www.guardsquare.com/en/products官网下载,如果你的网络无法下载,可以去https://download.csdn.net/download/yanh8706/10462358下载写这个文章时候的最新版本proguard6.0.3

        这个工具是操作的jar包,所以需要你提前将你的项目打成jar包,然后再用proguard来混淆。

2、解压后去proguard6.0.3\bin目录,执行proguardgui.bat文件会打开如下的一个界面

3、点击Input/Output按钮,然后Add input选择需要混淆的jar包,Add output选择混淆完之后输出路径。Library jars根据情况选择,有需要依赖的包就加到这里,没有依赖包就用默认设置不用修改。然后点next

4、进入了Shrinking页面,这里主要Keep选项,根据自己情况选择,例如是应用程序就选Application,WEB工程就选Librarys,还有Android等自己根据情况选择,然后next

5、进入Obfuscation页面配置混淆规则,这一页选项都选默认就可以了。然后下一步Optimization页面,没特殊需要也默认就可以,上面两项如果有特殊要求,可以仔细研究一下官方文档修改配置。如果混淆后程序运行不太正常,可以把Optimize选项关闭。反正我们最关心的是混淆和防止反编译,代码优化不优化的不是很重要。

6、进入Information页面,注意Target可以选择JDK版本,还有个Ignore warnings about possibly erronous input,如果混淆的时候,因为警告导致无法继续,可以把这个选项勾上。其它的选默认就可以了,然后下一步。 

7、进入Process页面,可以点"Process!"按钮进行混淆,话也可以点"Save configuration..."按钮将配置文件保存。如果混淆出错了就倒回去查查每项配置是不是有问题,或者懂工具配置项含义的话可以直接修改上面保存的配置文件,然后重新Load configuration使用修改完的配置文件来进行混淆操作。

成功后,反编译看看方法名等都已经被替换成了无意义的值,代码也变得不是那么容易阅读了。然后再测试新生成的jar包功能是否正常。

上面只是写了最基本的使用,其实这个工具有很多配置项是可以好好研究研究的,例如配置那些类、那些方法混淆哪些不混淆等等,有时间了再好好写写。

 

转载于:https://www.cnblogs.com/yanh0606/p/9145075.html

ProGuard 是一款功能强大的 Java 字节码优化工具,它可以混淆、压缩和优化 Java 应用程序的字节码,从而减小应用体积、止逆向工程和保护代码版权。当你混淆 jar 包时,ProGuard 会对 Java 类中的代码进行以下操作: 1. **符号擦除**(Renaming & Shuffling): ProGuard 将类名、字段名、方法名和参数名转换为无意义的名字,使得反编译后的代码难以理解。 2. **去除冗余代码**(Pruning dead code): 删除未被引用的方法和字段,减少不必要的库依赖。 3. **压缩代码**(Obfuscation): 对代码进行包装,使逻辑变得更难理解和分析。 4. **加密敏感信息**(Code shrinking): 可选地对敏感数据进行加密或混淆,增强安全性。 5. **止逆向工程**(Optimizations for size & speed): 进行一些优化,如消除空指针检查等,提高应用程序运行速度和内存效率。 要使用 ProGuard 混淆 jar 包,你需要按照以下步骤操作: 1. 添加 ProGuard 插件到构建工具:如果是 Maven 或 Gradle 项目,可以在 build.gradle 或 pom.xml 文件中配置插件。 - Maven 示例: ```groovy plugins { id 'com.github.johnrengelman.proguard-maven-plugin' version '0.8' } ``` - Gradle 示例: ```gradle apply plugin: 'com.github.johnrengelman.proguard-gradle' proguard { // 配置选项 } ``` 2. 创建或编辑混淆规则文件(proguard-rules.pro): 在这里定义具体的混淆规则,比如保留哪些类和方法,以及要删除的无用资源等。 3. 执行混淆过程:运行构建命令(mvn clean install, gradle assemble),其中会调用 ProGuard 工具对打包前的 class 文件进行处理。 ```bash mvn proguard:proguard # 或者对于 Gradle: ./gradlew assembleWithProguard ``` 4. 查看生成的混淆后的 jar 包:确认混淆成功后,jar 包内的代码已经经过了混淆处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值