九一热线精品视频6_四川少妇XXXX内谢欧美_四虎国产精品永久入口一_越南无码精品_国产亚欧美精品久久久

Spring Boot 項目代碼混淆,實戰(zhàn)來了,再也不用擔心代碼泄露了!

2023-04-26 09:13:02     來源:博客園

編譯

簡單就是把代碼跑一哈,然后我們的代碼 .java文件 就被編譯成了 .class 文件

反編譯

就是針對編譯生成的 jar/war 包 里面的 .class 文件 逆向還原回來,可以看到你的代碼寫的啥。


(資料圖)

比較常用的反編譯工具 JD-GUI ,直接把編譯好的jar丟進去,大部分都能反編譯看到源碼:

那如果不想給別人反編譯看自己寫的代碼呢?

怎么做?

混淆

該篇玩的代碼混淆 ,是其中一種手段。

我給你看,但你反編譯看到的不是真正的代碼。

先看一張效果示例圖 :

開搞

正文

先看一下我們混淆一個項目代碼,要做啥?

一共就兩步

推薦一個開源免費的 Spring Boot 最全教程:

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

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

proguard.cfg

#指定Java的版本-target 1.8#proguard會對代碼進行優(yōu)化壓縮,他會刪除從未使用的類或者類成員變量等-dontshrink#是否關閉字節(jié)碼級別的優(yōu)化,如果不開啟則設置如下配置-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[]);    }

注意點:

其余的看注釋,可以配置哪些類不參與混淆,哪些枚舉保留,哪些方法名不混淆等等。

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

build標簽里面改動加入一下配置:

                        com.github.wvengen            proguard-maven-plugin            2.6.0                                                                package                                            proguard                                                                                            ${project.build.finalName}.jar                                ${project.build.finalName}.jar                                true                                ${project.basedir}/proguard.cfg                                                    ${java.home}/lib/rt.jar                    ${java.home}/lib/jce.jar                    ${java.home}/lib/jsse.jar                                                !META-INF/**,!META-INF/versions/9/**.class                                ${project.basedir}/target                                                                                                            org.springframework.boot            spring-boot-maven-plugin                                                                        repackage                                                                com.example.myproguarddemo.MyproguarddemoApplication                                                            

注意點:

然后可以看到:

然后點擊package,正常執(zhí)行編譯打包流程就可以 :

然后可以看到jar的生成:

看看效果:

好了,該篇就到這。

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

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優(yōu)雅的方式!!

5.《Java開發(fā)手冊(嵩山版)》最新發(fā)布,速速下載!

覺得不錯,別忘了隨手點贊+轉發(fā)哦!

關鍵詞:

明星

電影