成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot 項目 Jar 包加密,防止反編譯!

開發 項目管理
啟動包加密之后,方法體被清空,保留方法參數、注解等信息.主要兼容swagger文檔注解掃描。反編譯只能看到方法名和注解,看不到方法體的具體內容。

場景

最近項目要求部署到其他公司的服務器上,但是又不想將源碼泄露出去。要求對正式環境的啟動包進行安全性處理,防止客戶直接通過反編譯工具將代碼反編譯出來。

方案

第一種方案使用代碼混淆

采用proguard-maven-plugin插件。

在單模塊中此方案還算簡單,但是現在項目一般都是多模塊,一個模塊依賴多個公共模塊。那么使用此方案就比較麻煩,配置復雜,文檔難懂,各模塊之間的調用在是否混淆時極其容易出錯。

第二種方案使用代碼加密

采用classfinal-maven-plugin插件

此方案比對上面的方案來說,就簡單了許多。直接配置一個插件就可以實現源碼的安全性保護。并且可以對yml、properties配置文件以及lib目錄下的maven依賴進行加密處理。若想指定機器啟動,支持綁定機器,項目加密后只能在特定機器運行。

ClassFinal項目源碼地址:https://gitee.com/roseboy/classfinal

項目操作

只需要在啟動類的pom.xml文件中加如下插件即可,需要注意的是,改插件時要放到spring-boot-maven-plugin插件后面,否則不起作用。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <!--
                    1. 加密后,方法體被清空,保留方法參數、注解等信息.主要兼容swagger文檔注解掃描
                    2. 方法體被清空后,反編譯只能看到方法名和注解,看不到方法體的具體內容
                    3. 加密后的項目需要設置javaagent來啟動,啟動過程中解密class,完全內存解密,不留下任何解密后的文件
                    4. 啟動加密后的jar,生成xxx-encrypted.jar,這個就是加密后的jar文件,加密后不可直接執行
                    5. 無密碼啟動方式,java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar
                    6. 有密碼啟動方式,java -javaagent:xxx-encrypted.jar='-pwd= 密碼' -jar xxx-encrypted.jar
                -->
            <groupId>net.roseboy</groupId>
            <artifactId>classfinal-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <password>#</password><!-- #表示啟動時不需要密碼,事實上對于代碼混淆來說,這個密碼沒什么用,它只是一個啟動密碼 -->
                <excludes>org.spring</excludes>
                <packages>${groupId}</packages><!-- 加密的包名,多個包用逗號分開 -->
                <cfgfiles>application.yml,application-dev.yml</cfgfiles><!-- 加密的配置文件,多個包用逗號分開 -->
                <libjars>hutool-all.jar</libjars> <!-- jar包lib下面要加密的jar依賴文件,多個包用逗號分開 -->
                <code>xxxx</code> <!-- 指定機器啟動,機器碼 -->
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>classFinal</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>

啟動方式

無密碼啟動

java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar

有密碼啟動

java -javaagent:xxx-encrypted.jar='-pwd=密碼' -jar xxx-encrypted.jar

反編譯效果

啟動包加密之后,方法體被清空,保留方法參數、注解等信息.主要兼容swagger文檔注解掃描。

反編譯只能看到方法名和注解,看不到方法體的具體內容。

啟動過程中解密class,完全內存解密,不留下任何解密后的文件。

圖片圖片

yml配置文件留下空白。

圖片

綁定機器啟動

下載到classfinal-fatjar-1.2.1.jar依賴,在當前依賴下cmd執行java -jar classfinal-fatjar-1.2.1.jar -C命令,會自動生成一串機器碼。

圖片

將此生成好的機器碼,放到maven插件中的code里面即可。這樣,打包好的項目只能在生成機器碼的機器運行,其他機器則啟動不了項目。

責任編輯:武曉燕 來源: JAVA日知錄
相關推薦

2024-09-14 07:00:28

SpringBoot代碼反編譯

2025-02-06 16:58:30

2021-12-17 14:27:52

jar反編譯Java

2025-06-17 09:31:24

2015-01-15 11:01:43

2025-04-02 07:42:49

2023-09-01 08:26:06

SpringBootjar包war包

2010-09-25 10:32:52

Java字節碼

2021-12-10 10:05:27

Java反編譯jar

2015-07-20 16:37:11

2011-05-31 14:52:13

Android 反編譯 方法

2025-06-17 07:35:27

Spring程序jadx

2015-08-20 10:13:34

2021-03-07 16:31:35

Java編譯反編譯

2017-02-20 13:54:14

Java代碼編譯

2015-01-15 10:15:16

Android反編譯-smail語法

2011-05-31 14:38:04

Android 反編譯

2022-02-13 20:31:26

SpringBootjarmanifests

2011-04-20 10:32:44

java反編譯

2009-06-11 14:11:33

代碼混淆Java反編譯
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产综合久久福利软件 | 一区视频在线免费观看 | 成人免费在线网 | 国产电影一区二区在线观看 | 97免费在线观看视频 | 一区二区精品视频 | 亚洲精品久久国产高清情趣图文 | 天天综合久久 | 91精品国产91久久久久久吃药 | 一区二区三区成人 | 日韩精品在线看 | 久久久一区二区三区四区 | 精品久久久久一区二区国产 | 午夜一区 | 91麻豆精品国产91久久久久久久久 | 偷拍自拍第一页 | 日韩高清中文字幕 | 日韩av成人| 久久精品国内 | 成人午夜免费视频 | 欧美一区二 | 国产在线视频一区 | 国产精品久久久久久久久久久久冷 | 日韩在线第一 | 午夜视频网 | 麻豆毛片 | 亚洲一区二区精品视频在线观看 | 久久久性 | 国产视频中文字幕 | 欧洲成人午夜免费大片 | 欧美www在线 | 精品欧美色视频网站在线观看 | 精品欧美一区免费观看α√ | 小视频你懂得 | 亚洲视频免费一区 | 国产日韩久久 | www久久 | 国产精品视频一 | 伊人免费在线观看 | 久久久久久高清 | 一区二区三区四区免费视频 |