Spring Boot 项目代码混淆,实战来了,再也不用担心代码泄露了!

点击关注公众号,Java干货及时送达aa55f7de9e7b2c99bde634871d43ae85.png

266a2e03b6daad403174f59d6beb327d.png 学习 Spring Cloud 微服务的正确姿势!

bee8aed0db444903e6b7359bee64e985.png 你的一个 ChatGPT 账号待查收。


编译

简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件

14b6ee99b70a95150df35d0c780e139a.png

反编译

就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥。

比较常用的反编译工具 JD-GUI ,直接把编译好的jar丢进去,大部分都能反编译看到源码:

93d23a1c0708f0b30e276c71d61e5ddb.png

那如果不想给别人反编译看自己写的代码呢?

怎么做?

混淆

该篇玩的代码混淆 ,是其中一种手段。

我给你看,但你反编译看到的不是真正的代码。

先看一张效果示例图 :

e37a5a09bda83aef28926acdcd6e5af0.png

开搞

正文

先看一下我们混淆一个项目代码,要做啥?

014592e56722ca96ef2e055fe2bece9e.png

一共就两步

推荐一个开源免费的 Spring Boot 最全教程:

https://github.com/javastacks/spring-boot-best-practice

第一步, 在项目路径下,新增一份文件 proguard.cfg :

proguard.cfg

#指定Java的版本
-target 1.8
#proguard会对代码进行优化压缩,他会删除从未使用的类或者类成员变量等
-dontshrink
#是否关闭字节码级别的优化,如果不开启则设置如下配置
-dontoptimize
#混淆时不生成大小写混合的类名,默认是可以大小写混合
-dontusemixedcaseclassnames
# 对于类成员的命名的混淆采取唯一策略
-useuniqueclassmembernames
#混淆时不生成大小写混合的类名,默认是可以大小写混合
-dontusemixedcaseclassnames
#混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代
-adaptclassstrings#对异常、注解信息予以保留
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
# 此选项将保存接口中的所有原始名称(不混淆)-->
-keepnames interface ** { *; }
# 此选项将保存所有软件包中的所有原始接口文件(不进行混淆)
#-keep interface * extends * { *; }
#保留参数名,因为控制器,或者Mybatis等接口的参数如果混淆会导致无法接受参数,xml文件找不到参数
-keepparameternames
# 保留枚举成员及方法
-keepclassmembers enum * { *; }
# 不混淆所有类,保存原始定义的注释-
-keepclassmembers class * {@org.springframework.context.annotation.Bean *;@org.springframework.beans.factory.annotation.Autowired *;@org.springframework.beans.factory.annotation.Value *;@org.springframework.stereotype.Service *;@org.springframework.stereotype.Component *;}#忽略warn消息
-ignorewarnings
#忽略note消息
-dontnote
#打印配置信息
-printconfiguration
-keep public class com.example.myproguarddemo.MyproguarddemoApplication {public static void main(java.lang.String[]);}

注意点:

bc96bffa6aad5c285dfcbd71cf3a9cd3.png

其余的看注释,可以配置哪些类不参与混淆,哪些枚举保留,哪些方法名不混淆等等。另外,如果你近期准备面试跳槽,建议在Java面试库小程序在线刷题,涵盖 2000+ 道 Java 面试题,几乎覆盖了所有主流技术面试题。

第二步,在pom文件上 加入proguard 混淆插件 :

build标签里面改动加入一下配置:

<build><plugins><plugin><groupId>com.github.wvengen</groupId><artifactId>proguard-maven-plugin</artifactId><version>2.6.0</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><!-- 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 --><proguardInclude>${project.basedir}/proguard.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><!-- 对输入jar进行过滤比如,如下配置就是对META-INFO文件不处理。 --><inLibsFilter>!META-INF/**,!META-INF/versions/9/**.class</inLibsFilter><!-- 这是输出路径配置,但是要注意这个路径必须要包括injar标签填写的jar --><outputDirectory>${project.basedir}/target</outputDirectory><!--这里特别重要,此处主要是配置混淆的一些细节选项,比如哪些类不需要混淆,哪些需要混淆--><options><!-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 --></options></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals><configuration><mainClass>com.example.myproguarddemo.MyproguarddemoApplication</mainClass></configuration></execution></executions></plugin></plugins>
</build>

注意点:

790c6d8a79fb8765f0bb73698e580ebf.png 2c4295520636305d22891cc8c9b92512.png

然后可以看到:

12aa41defc6d8c11409db4c590d941f9.png

然后点击package,正常执行编译打包流程就可以 :

cedde0cdcdfcf675d81f72056269ca88.png

然后可以看到jar的生成:

4b5f200fe5a4db870404c5d1b6fac1ca.png

看看效果:

cfe5a8b1e885b6652f3563bf06e6c235.png

好了,该篇就到这。

本文链接:https://blog.csdn.net/qq_35387940/article/details/127426354


最近 ChatGPT 太火爆啦,有人靠它提高工作效率,有人靠它赚了第一桶金,但也有很多人对 ChatGPT 还一无所知。。

朋友圈也经常有人找我咨询 ChatGPT,根本回答不过来,于是R哥创建了一个《ChatGPT小密圈》知识星球,和大家分享这个巨大的红利。

加入星球福利:

1、加入即送一个超难注册的 ChatGPT 账号,个人独享,一人一号。

2、星球分享了大量 ChatGPT 学习资料, ChatGPT 专栏目前还输出了 40+ 篇保姆级教程,持续更新中。

3、免费邀请进 ChatGPT 微信交流群,巨大红利期,群里不能太活跃,干货不能太多了。

c3240b8f73596f14c495ff42b61cac32.png真正的高质量 ChatGPT 知识星球,点击《ChatGPT小密圈》知识星球了解详情。

跟上时代步伐,快扫码加入吧:

f93e6c996aaf8657f8c1c101a2feceb8.jpeg

满 1000 人涨价啦,早就是优势!

ChatGPT 不会替代你,但掌握了它的人会!

End

d09a77c1f3d62afded4db0902233000e.png 学习 Spring Cloud 微服务的正确姿势!

42d6be87318a4040ddbea19499cc3e3b.png 用上 ChatGPT 啦,强的离谱!

e808a1f8ed40c7f0effd2b2336f0629d.png ChatGPT 这次赢麻了。。。

da3d871bd25803343d44ba6e65e31711.png 怎么删除 HashMap 中的重复元素?

99b78923ca4f9beb2c334484e76b6043.png Java 20 正式发布,超神了。。

ddb7a405b7c7881ee9afa24bb37236c1.jpeg

52389f1298bc76176e53306cef30d7e8.gif

Spring Cloud 微服务最新课程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68981.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于本人多年工作经验谈谈对于BIM的理解

建筑信息模型&#xff08;Building Information Modeling&#xff0c;简称BIM )&#xff0c;是以三维数字技术为 基础&#xff0c;集成建筑工程项目各种相关信息的工程数据模型&#xff0c;通过数字信息仿真模拟建筑物所具有的真实信息。 BIM理念提出至今已经40余年&#xff0c…

计算机在未来土木工程领域的作用,CAD在土木工程领域中的应用策略

摘要:因为CAD的储存方便且快捷, 所以被广泛应用在土木工程领域。论文阐释了CAD技术在土木工程中应用的优缺点, 并且在此基础上, 提出了CAD在土木工程领域中的应用策略, 为之后的土木工程应用CAD技术提供参考, 能够推动基于CAD技术的土木工程健康稳定发展。 关键词:CAD,土木工…

BUAA-2023软件工程——团队成员介绍

项目这个作业属于哪个课程2023北航敏捷软件工程这个作业的要求在哪里团队项目-团队成员介绍我们在这个课程的目标是学习并实践软件工程开发的方法论。在把握整体流程和内容要素的基础上实践细节&#xff0c;培养开发技术、开发思维、团队协作等能力。这个作业在哪个具体方面帮助…

2023软件工程中各种图在现代企业级开发中的使用频率

概览 系统流程图 ✔ 数据流图 不常用 ER图 ✔ 状态转换图 ✔ Warnier图 不常用 IPO图 不常用 Petri网 不常用 层次方框图 不常用 层次图 a.k.a. H图 ✔ 1,层次图描绘软件的层次结构.层层次方框图描绘的是数据结构。 2,层次图的方框表示模块或子模块。层次方框图的方框表示数据结…

系统集成项目管理工程师案例分析考点汇总(沟通/干系人、风险、合同等)

沟通及干系人管理常见考点1. 沟通管理计划的内容2. 项目绩效报告的主要内容3. 沟通中容易出现的问题4. 如何采取有效措施改进沟通5. 如何召开有效的会议合同管理常见考点1. 合同签订时应注意的内容及条款2. 合同管理常见的问题3. 合同管理问题的应对措施采购管理常见考点1. 采购…

可以发布新闻稿的平台有哪些?

可以发布新闻稿的平台有哪些&#xff1f; 一、门户大众网站 新浪网、搜狐网、腾讯网、网易网、凤凰网、中华网、人民网、央视网、千龙网、新华网、 中国网、中国日报网、中国经济网、中国新闻网、中国广播网、学习强国、北青网、消费日 报网、界面新闻、澎湃新闻垂直媒体等…

使用海外社交媒体的九种方法(和五个专业提示!)

社交媒体是推广您的产品、吸引新客户以及围绕您的业务建立社区的有效方式。您可以使用社交媒体做的事情几乎没有限制&#xff0c;但无限的可能性会带来让自己过于分散的风险。好消息是&#xff0c;通过遵循一些最佳实践&#xff0c;您的在线商店可以取得成功。 目录 使用…

发布新闻的步骤和技巧

发布新闻是一项非常重要的任务&#xff0c;无论是企业还是个人&#xff0c;都可以通过发布新闻来传达信息和宣传自己。以下是发布新闻的步骤和技巧&#xff0c;帮助你成功发布一条新闻。 1、确定新闻的目标受众 在发布新闻之前&#xff0c;你需要确定新闻的目标受众。你希望这条…

视频问答新增或修改视频问答

通过问答id新增或修改视频问答题目 新增或修改视频问答 图3&#xff1a;视频问答功能&#xff08;观看效果&#xff09; 图4&#xff1a;视频问答功能&#xff08;观看效果&#xff09; 图5&#xff1a;视频问答功能&#xff08;观看效果&#xff09; 单元测试 Testpublic voi…

硕士论文理论部分怎么降重

硕士论文理论部分怎么降重 本科硕士论文降重有哪些技巧&#xff1f;纯干货技分享 正在准备本科硕士论文的你&#xff0c;好不容易熬到把论文写完&#xff0c;按照老师的意见修改完毕后&#xff0c;却发现还有降重这个千古难题等着大家。 不知道怎么降重&#xff1f;重复率太高…

python开源聊天机器人ChatterBot——聊天机器人搭建、流程分析、源码分析

开源聊天机器人ChatterBot 3.1 ChatterBot简介 ChatterBot是一个Python库&#xff0c;可以轻松生成对用户输入的自动响应。ChatterBot使用一系列机器学习算法来产生不同类型的响应。这使开发人员可以轻松创建聊天机器人并自动与用户进行对话。 ChatterBot的独立于语言的设计…

Python搭建聊天机器人

Python用AIML搭建聊天机器人 AIML&#xff0c;全名为Artificial Intelligence Markup Language&#xff08;人工智能标记语言&#xff09;&#xff0c;是一种创建自然语言软件代理的XML语言&#xff0c;是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的。 …

林铭的鸿蒙灵珠,终于知道了《儒道至圣》中方运和《真武世界》中天元谁更厉害了!...

原标题&#xff1a;终于知道了《儒道至圣》中方运和《真武世界》中天元谁更厉害了&#xff01; 哈喽&#xff0c;大家好&#xff0c;我是老罗&#xff0c;今天给大家盘点《儒道至圣》中方运和《真武世界》中天元谁更厉害的对比&#xff01; 在血芒古地是无敌状态&#xff0c;可…

非共识与小趋势——复盘罗辑思维7年演化之路

两个月前和罗振宇一场长长长聊&#xff0c;交换的信息量有点大&#xff0c;撞得脑仁生疼。隔了60天&#xff0c;觉得还是很多东西有意思&#xff0c;忍不住写出来。 2012年12月21日&#xff0c;就是玛雅人预言中世界末日那一天&#xff0c;罗振宇在优酷推出了个人脱口秀节目《罗…

黑龙潭,北京真龙的栖身之所?

黑龙潭&#xff0c;北京真龙的栖身之所&#xff1f; 作为一个龙的传人&#xff0c;你是不是很想知道自己的远祖曾经居住在哪儿&#xff1f;我相信&#xff0c;答案是肯定的&#xff0c;千百年来&#xff0c;或许已有无数的人都在苦苦的探寻&#xff0c;试图揭开这一历史之谜。有…

“互联网从此没有 BAT”

作者 | 黎明 编辑 | 魏佳 本文经授权转自燃财经&#xff08;ID:rancaijing&#xff09; 长期被唱衰的百度&#xff0c;终于到了正式告别BAT的关键时刻。 过去30天&#xff0c;受业绩下滑和高管离职等因素影响&#xff0c;百度的股价跌去30%&#xff0c;市值蒸发200亿美金。美团…

优思学院|什么才是真正的精益化管理?-CLMP

精益管理&#xff0c;或者精益生产&#xff08;Lean Production&#xff09;一般定义为&#xff1a;彻底消除浪费&#xff0c;创造更大利润的管理和改进方法。 这样的定义与一般常见的其他管理方法技术的定义其实都是大同小异&#xff0c;所以有些企业只要有做一些改善的活动&…

真龙霸业服务器维护,真龙霸业服务器连接失败怎么回事_真龙霸业服务器连接不上怎么解决_玩游戏网...

《真龙霸业》怎么关闭全屏 大家在玩真龙霸业这一款游戏的时候&#xff0c;那么就会出现各种的问题&#xff0c;那么遇到怎么关闭全屏&#xff0c;界面不适配的时候要怎么解决呢&#xff1f;今天小编就来给大家介绍一下。真龙霸业怎么关闭全屏?安卓手机在运行的时候容易出现问题…

真龙霸业服务器维护,真龙霸业登录不进去怎么办_真龙霸业连接不上服务器_玩游戏网...

大家在玩真龙霸业这一款游戏的时候肯定是需要率先登陆的&#xff0c;但是大家在登陆的过程中就遇到了连接不上服务器的问题&#xff0c;要怎么处理呢&#xff1f;小编这就为大家带来方法。 真龙霸业无法登录怎么办&#xff1f; 网络问题 第一个小编肯定要说的&#xff0c;就是网…

真龙霸业服务器维护,真龙霸业进不去怎么办 游戏无法进入解决方法详解[多图]...

真龙霸业有时会出现游戏无法进入的情况&#xff0c;对玩家们来说是一个比较大的影响&#xff0c;很多玩家都还不知道该怎么才能解决&#xff0c;下面安族小编就来给大家介绍一下游戏无法进入解决方法详解。 真龙霸业进不去解决方法 区爆满的玩家说明满了&#xff0c;因为这种游…