文章目录
- 1.插件混淆
- (1.)pom配置
- (2.)混淆配置
- (3.)打包
- 2.反编译查看效果
- (1.)工具下载
- (2.)反编译对比
- 3.启动测试
- 4.功能测试
- 5.二次加密
本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得
需求,领导要求我们离线产品得加密和混淆,
流程是人工代码混淆 + 插件混淆 + 插件加密;
所以这篇博客是插件混淆+插件加密;
1.插件混淆
这里得技术选型是ProGuard
(1.)pom配置
记得放最上面
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.6.1</version>
<executions>
<!-- 以下配置说明执行mvn的package命令时候,会执行proguard-->
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。 -->
<injar>${project.build.finalName}.jar</injar>
<!-- 输出jar名称,输入输出jar同名的时候就是覆盖,也是比较常用的配置。 -->
<outjar>${project.build.finalName}.jar</outjar>
<!-- 是否混淆 默认是true -->
<obfuscate>true</obfuscate>
<!-- 配置一个文件,通常叫做xhao.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 -->
<proguardInclude>${project.basedir}/xhao.cfg</proguardInclude>
<!-- 额外的jar包,通常是项目编译所需要的jar -->
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
<lib>${java.home}/lib/jsse.jar</lib>
</libs>
<!-- 这是输出路径配置,但是要注意这个路径必须要包括injar标签填写的jar -->
<outputDirectory>${project.basedir}/target</outputDirectory>
<!--这里特别重要,此处主要是配置混淆的一些细节选项,比如哪些类不需要混淆,哪些需要混淆-->
<options>
<!-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 -->
</options>
</configuration>
</plugin>
(2.)混淆配置
和pom放到同一目录,叫什么在pom里面配置 我这里叫xhao.cfg
#指定Java的版本
-target 1.8
#proguard会对代码进行优化压缩,他会删除从未使用的类或者类成员变量等
-dontshrink
#
#混淆时不生成大小写混合的类名,默认是可以大小写混合
-dontusemixedcaseclassnames
# 对于类成员的命名的混淆采取唯一策略
-useuniqueclassmembernames
# 保留异常、注解信息
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
#
# 保留参数名,因为控制器,或者Mybatis等接口的参数如果混淆会导致无法接受参数,xml文件找不到参数
-keepparameternames
#
# 保留枚举成员及方法
-keepclassmembers enum * { *; }
#
# 保留特定注解的类和方法
-keepclasseswithmembers class * {
@org.springframework.context.annotation.Bean <methods>;
@org.springframework.beans.factory.annotation.Autowired <fields>;
@org.springframework.beans.factory.annotation.Value <fields>;
@org.springframework.stereotype.Service <fields>;
@org.springframework.stereotype.Component <fields>;
}
# 忽略note消息
-dontnote
# 打印配置信息
-printconfiguration
-ignorewarnings
# 保留主应用程序入口点
-keep public class com.mingqivr.DltApplication {
public static void main(java.lang.String[]);
}
(3.)打包
自己打包
2.反编译查看效果
(1.)工具下载
JD-Gui工具下载地址
(2.)反编译对比
3.启动测试
4.功能测试
领导又安排别的工作了,后续补充!!! (⋟﹏⋞)
5.二次加密
试用classfinal进行二次加密
详细步骤待补充 下面是效果对比图
如果点赞多,评论多会更新详细教程,待补充。