最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Class 加密工具 ClassFinal詳解

 更新時(shí)間:2023年03月20日 09:02:05   作者:笑蝦  
ClassFinal 是一款 java class 文件安全加密工具,支持直接加密jar包或war包,無(wú)需修改任何項(xiàng)目代碼,兼容spring-framework;可避免源碼泄漏或字節(jié)碼被反編譯,這篇文章主要介紹了Java Class 加密工具 ClassFinal,需要的朋友可以參考下

Jar包加密工具 ClassFinal

介紹

  • ClassFinal 是一款 java class 文件安全加密工具,支持直接加密jar包或war包,無(wú)需修改任何項(xiàng)目代碼,兼容spring-framework;可避免源碼泄漏或字節(jié)碼被反編譯。
  • 加密后,原始的class文件中方法體被清空,當(dāng)class被classloader加載時(shí),真正的方法體會(huì)被解密注入。
  • 為兼容spring,swagger等掃描注解的框架,故而保留了方法參數(shù)、注解等信息;反編譯者只能看到方法名和注解;
  • 注意:為了保證項(xiàng)目在運(yùn)行時(shí)的安全,啟動(dòng)jvm時(shí)請(qǐng)加參數(shù): -XX:+DisableAttachMechanism 。

此參數(shù)的含義是禁用JVM的附加機(jī)制。在JVM中,有一個(gè)附加機(jī)制可以讓外部進(jìn)程通過(guò)Java Debug Wire Protocol(JDWP)協(xié)議附加到正在運(yùn)行的Java進(jìn)程上,從而獲得進(jìn)程的調(diào)試信息。這個(gè)機(jī)制在調(diào)試和診斷Java應(yīng)用程序時(shí)非常有用。
然而,在某些情況下,禁用這個(gè)機(jī)制可以提高Java應(yīng)用程序的安全性。例如,如果您希望限制外部進(jìn)程對(duì)正在運(yùn)行的Java進(jìn)程的訪問(wèn),或者想要確保Java進(jìn)程不會(huì)被未經(jīng)授權(quán)的用戶附加和調(diào)試,您可以使用這個(gè)參數(shù)來(lái)禁用JVM的附加機(jī)制。當(dāng)使用這個(gè)參數(shù)時(shí),JVM將不再響應(yīng)任何附加請(qǐng)求,從而防止外部進(jìn)程通過(guò)JDWP協(xié)議附加到正在運(yùn)行的Java進(jìn)程上。
例:java -XX:+DisableAttachMechanism -jar MyApp.jar

環(huán)境依賴

JDK 1.8 +

使用說(shuō)明

下載

點(diǎn)此下載

加密 命令行

執(zhí)行以下命令

java -jar classfinal-fatjar.jar -file jerry.jar -libjars a.jar,b.jar -packages com.jerry1,com.jerry2 -exclude com.jerry.Main -pwd 123456 -Y

參數(shù)說(shuō)明
-file        加密的jar/war完整路徑
-packages    加密的包名(可為空,多個(gè)用","分割)
-libjars     jar/war包lib下要加密jar文件名(可為空,多個(gè)用","分割)
-cfgfiles    需要加密的配置文件,一般是classes目錄下的yml或properties文件(可為空,多個(gè)用","分割)
-exclude     排除的類名(可為空,多個(gè)用","分割)
-classpath   外部依賴的jar目錄,例如/tomcat/lib(可為空,多個(gè)用","分割)
-pwd         加密密碼,如果是#號(hào),則使用無(wú)密碼模式加密
-code        機(jī)器碼,在綁定的機(jī)器生成,加密后只可在此機(jī)器上運(yùn)行
-Y           無(wú)需確認(rèn),不加此參數(shù)會(huì)提示確認(rèn)以上信息

結(jié)果: 生成加密后的jar文件 jerry-encrypted.jar。執(zhí)行時(shí)需帶 javaagent 參數(shù)。

注: 也可以直接執(zhí)行 java -jar classfinal-fatjar.jar 以交互式操作。

示例

我的jar包:jerry.jar,密碼123456

java -jar classfinal-fatjar-1.2.1.jar -file jerry.jar -packages com.jerry -pwd 123456 -Y
=========================================================
=                                                       =
=      Java Class Encryption Tool v1.2.1   by Mr.K      =
=                                                       =
=========================================================
加密信息如下:
-------------------------
1. jar/war路徑:      jerry.jar
2. lib下的jar:
3. 包名前綴:          com.jerry
4. 排除的類名:
5. 加密配置文件:
6. ClassPath:
7. 密碼:             123456
8. 機(jī)器碼:
-------------------------

處理中...
加密完成,請(qǐng)牢記密碼!
==>jerry-encrypted.jar

maven插件方式

在要加密的項(xiàng)目pom.xml中加入以下插件配置,目前最新版本是:1.2.1。

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <!-- https://gitee.com/roseboy/classfinal -->
                <groupId>net.roseboy</groupId>
                <artifactId>classfinal-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <!-- 加密打包之后pom.xml會(huì)被刪除,不用擔(dān)心在jar包里找到此密碼-->
                    <password>jerry</password>
                    <!-- 需要加密的包。多個(gè)以逗號(hào),分割 -->
                    <packages>com.classfinal</packages>
                    <!-- 需要加密的配置文件。多個(gè)以逗號(hào),分割 -->
                    <cfgfiles>bootstrap.yml,application.yml</cfgfiles>
                    <!-- 不想要加密的jar包。多個(gè)以逗號(hào),分割 -->
                    <excludes>org.spring</excludes>
                    <!-- 加密依賴的第三方j(luò)ar包。多個(gè)以逗號(hào),分割 -->
                    <libjars>jerry-common-core-0.0.1.jar,jerry-common-redis-0.0.1.jar</libjars>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>classFinal</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

運(yùn)行mvn package時(shí)會(huì)在target下自動(dòng)加密生成yourpaoject-encrypted.jar。
maven 插件的參數(shù)名稱與直接運(yùn)行的參數(shù)相同,請(qǐng)參考上節(jié)的參數(shù)說(shuō)明。

無(wú)密碼模式

  • 加密時(shí)-pwd參數(shù)設(shè)為#,啟動(dòng)時(shí)可不用輸入密碼;
  • 如果是war包,啟動(dòng)時(shí)指定參數(shù) -nopwd,跳過(guò)輸密碼過(guò)程。

機(jī)器綁定

機(jī)器綁定只允許加密的項(xiàng)目在特定的機(jī)器上運(yùn)行;
加密時(shí)用 -code 指定機(jī)器碼。機(jī)器綁定可同時(shí)支持機(jī)器碼+密碼的方式加密。
在需要綁定的機(jī)器上執(zhí)行以下命令,生成機(jī)器碼

java -jar classfinal-fatjar.jar -C

啟動(dòng)加密后的jar

加密后的項(xiàng)目需要設(shè)置 javaagent來(lái)啟動(dòng),項(xiàng)目在啟動(dòng)過(guò)程中解密class,完全內(nèi)存解密,不留下任何解密后的文件。

解密功能已經(jīng)自動(dòng)加入到 yourpaoject-encrypted.jar 中,所以啟動(dòng)時(shí) -javaagent-jar 相同,不需要額外的jar包。

密碼讀取順序:
參數(shù)獲取 >> 環(huán)境變量獲取 >> 密碼文件獲取 >> 控制臺(tái)輸入 >> GUI輸入 >> 退出

啟動(dòng)參數(shù)給密碼

啟動(dòng)jar項(xiàng)目執(zhí)行以下命令:注意:如果是win系統(tǒng) "-pwd 0000000" 這里要用雙引號(hào)。

java -javaagent:jerry-encrypted.jar="-pwd 0000000" -jar jerry-encrypted.jar

//參數(shù)說(shuō)明
// -pwd      加密項(xiàng)目的密碼  
// -pwdname  環(huán)境變量中密碼的名字

不加密碼參數(shù)直接啟動(dòng)

1. 密碼文件獲取

java -javaagent:yourpaoject-encrypted.jar -jar yourpaoject-encrypted.jar

不加 pwd 參數(shù)直接啟動(dòng),優(yōu)先從密碼文件讀取。
在同級(jí)目錄下的classfinal.txtjerry-encrypted.classfinal.txt中寫(xiě)入密碼。

直接給密碼:classfinal.txt

123456

參數(shù)化配置啟動(dòng)后刪除:classfinal.txt

--pwd 123456 --del yes

這里的del只要不給falseno都會(huì)刪除。

項(xiàng)目讀取到密碼后會(huì)清空此文件。

2. 交互輸入

沒(méi)有找到 密碼文件 就會(huì)進(jìn)入交互輸入模式:先控制臺(tái)輸入還是沒(méi)給密碼就會(huì)進(jìn)入 GUI輸入模式,都不給密碼,就報(bào)錯(cuò)退出了。

控制臺(tái)輸入

在這里插入圖片描述

GUI輸入

在這里插入圖片描述

參考資料

Gitee: https://gitee.com/roseboy/classfinal

到此這篇關(guān)于Java Class 加密工具 ClassFinal的文章就介紹到這了,更多相關(guān)java加密class內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java深入淺出講解多線程的概念到使用

    Java深入淺出講解多線程的概念到使用

    哈哈!經(jīng)過(guò)一個(gè)階段的學(xué)習(xí),Java基礎(chǔ)知識(shí)學(xué)習(xí)終于到多線程了!Java多線程以及后面互斥鎖的概念都是Java基礎(chǔ)學(xué)習(xí)的難點(diǎn),所以我做了一個(gè)總結(jié),希望對(duì)大家也有幫助
    2022-05-05
  • springcloud整合gateway實(shí)現(xiàn)網(wǎng)關(guān)全局過(guò)濾器功能

    springcloud整合gateway實(shí)現(xiàn)網(wǎng)關(guān)全局過(guò)濾器功能

    本文主要介紹了springcloud整合gateway實(shí)現(xiàn)網(wǎng)關(guān)全局過(guò)濾器功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java用正則表達(dá)式實(shí)現(xiàn)${name}形式的字符串模板實(shí)例

    Java用正則表達(dá)式實(shí)現(xiàn)${name}形式的字符串模板實(shí)例

    這篇文章主要給大家介紹了Java如何用正則表達(dá)式實(shí)現(xiàn)${name}形式的字符串模板,文章給出詳細(xì)的實(shí)例代碼,對(duì)大家的理解和學(xué)習(xí)會(huì)很有幫助,有需要的朋友們下面來(lái)一起看看吧。
    2016-12-12
  • maven編譯打包如何跳過(guò)test測(cè)試

    maven編譯打包如何跳過(guò)test測(cè)試

    本文介紹了Maven編譯打包時(shí)跳過(guò)測(cè)試類的幾種方式,包括使用Maven命令、在POM文件中配置和在IDEA中設(shè)置
    2024-12-12
  • 詳解java設(shè)計(jì)模式中的門(mén)面模式

    詳解java設(shè)計(jì)模式中的門(mén)面模式

    門(mén)面模式又叫外觀模式(Facade?Pattern),主要用于隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個(gè)客戶端可以訪問(wèn)系統(tǒng)的接口,本文通過(guò)實(shí)例代碼給大家介紹下java門(mén)面模式的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-02-02
  • java性能分析jconsole詳解

    java性能分析jconsole詳解

    這篇文章主要介紹了java性能分析jconsole詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • MyBatis的<foreach>以及java代碼的批處理方式

    MyBatis的<foreach>以及java代碼的批處理方式

    這篇文章主要介紹了MyBatis的<foreach>以及java代碼的批處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • IDEA連接達(dá)夢(mèng)數(shù)據(jù)庫(kù)的詳細(xì)配置指南

    IDEA連接達(dá)夢(mèng)數(shù)據(jù)庫(kù)的詳細(xì)配置指南

    達(dá)夢(mèng)數(shù)據(jù)庫(kù)(DM Database)作為國(guó)產(chǎn)關(guān)系型數(shù)據(jù)庫(kù)的代表,廣泛應(yīng)用于企業(yè)級(jí)系統(tǒng)開(kāi)發(fā),本文將詳細(xì)介紹如何在IntelliJ IDEA中配置并連接達(dá)夢(mèng)數(shù)據(jù)庫(kù),助力開(kāi)發(fā)者高效完成數(shù)據(jù)庫(kù)開(kāi)發(fā)工作,需要的朋友可以參考下
    2025-03-03
  • JAVA包裝類及自動(dòng)封包解包實(shí)例代碼

    JAVA包裝類及自動(dòng)封包解包實(shí)例代碼

    JAVA包裝類及自動(dòng)封包解包實(shí)例代碼,需要的朋友可以參考一下
    2013-03-03
  • 圖片驗(yàn)證碼概述及實(shí)現(xiàn)步驟

    圖片驗(yàn)證碼概述及實(shí)現(xiàn)步驟

    本文主要介紹了圖片驗(yàn)證碼概述及實(shí)現(xiàn)步驟。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01

最新評(píng)論

大同县| 沂源县| 高尔夫| 巴南区| 临海市| 修水县| 滕州市| 金湖县| 屏边| 农安县| 抚远县| 区。| 辰溪县| 东山县| 彰武县| 马公市| 门源| 双流县| 太仓市| 光山县| 益阳市| 西丰县| 乐业县| 金溪县| 张家港市| 宿州市| 噶尔县| 仪征市| 息烽县| 包头市| 贞丰县| 抚松县| 西平县| 鄂伦春自治旗| 宜良县| 通化县| 拉萨市| 绍兴县| 阳信县| 英德市| 留坝县|