您好,登錄后才能下訂單哦!
本篇內容主要講解“Java Class加密工具ClassFinal怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java Class加密工具ClassFinal怎么使用”吧!
ClassFinal 是一款 java class 文件安全加密工具,支持直接加密jar包或war包,無需修改任何項目代碼,兼容spring-framework;可避免源碼泄漏或字節碼被反編譯。
加密后,原始的class文件中方法體被清空,當class被classloader加載時,真正的方法體會被解密注入。
為兼容spring,swagger等掃描注解的框架,故而保留了方法參數、注解等信息;反編譯者只能看到方法名和注解;
注意:為了保證項目在運行時的安全,啟動jvm時請加參數: -XX:+DisableAttachMechanism 。
此參數的含義是禁用JVM的附加機制。在JVM中,有一個附加機制可以讓外部進程通過Java Debug Wire Protocol(JDWP)協議附加到正在運行的Java進程上,從而獲得進程的調試信息。這個機制在調試和診斷Java應用程序時非常有用。
然而,在某些情況下,禁用這個機制可以提高Java應用程序的安全性。例如,如果您希望限制外部進程對正在運行的Java進程的訪問,或者想要確保Java進程不會被未經授權的用戶附加和調試,您可以使用這個參數來禁用JVM的附加機制。當使用這個參數時,JVM將不再響應任何附加請求,從而防止外部進程通過JDWP協議附加到正在運行的Java進程上。
例:java -XX:+DisableAttachMechanism -jar MyApp.jar
JDK 1.8 +
下載
點此下載
加密 命令行
執行以下命令
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
參數說明
-file 加密的jar/war完整路徑
-packages 加密的包名(可為空,多個用","分割)
-libjars jar/war包lib下要加密jar文件名(可為空,多個用","分割)
-cfgfiles 需要加密的配置文件,一般是classes目錄下的yml或properties文件(可為空,多個用","分割)
-exclude 排除的類名(可為空,多個用","分割)
-classpath 外部依賴的jar目錄,例如/tomcat/lib(可為空,多個用","分割)
-pwd 加密密碼,如果是#號,則使用無密碼模式加密
-code 機器碼,在綁定的機器生成,加密后只可在此機器上運行
-Y 無需確認,不加此參數會提示確認以上信息
結果: 生成加密后的jar文件 jerry-encrypted.jar
。執行時需帶 javaagent
參數。
注: 也可以直接執行 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. 機器碼: ------------------------- 處理中... 加密完成,請牢記密碼! ==>jerry-encrypted.jar
在要加密的項目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會被刪除,不用擔心在jar包里找到此密碼--> <password>jerry</password> <!-- 需要加密的包。多個以逗號,分割 --> <packages>com.classfinal</packages> <!-- 需要加密的配置文件。多個以逗號,分割 --> <cfgfiles>bootstrap.yml,application.yml</cfgfiles> <!-- 不想要加密的jar包。多個以逗號,分割 --> <excludes>org.spring</excludes> <!-- 加密依賴的第三方jar包。多個以逗號,分割 --> <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>
運行mvn package
時會在target
下自動加密生成yourpaoject-encrypted.jar
。
maven 插件的參數名稱與直接運行的參數相同,請參考上節的參數說明。
加密時-pwd
參數設為#
,啟動時可不用輸入密碼;
如果是war包,啟動時指定參數 -nopwd
,跳過輸密碼過程。
機器綁定只允許加密的項目在特定的機器上運行;
加密時用 -code
指定機器碼。機器綁定可同時支持機器碼
+密碼
的方式加密。
在需要綁定的機器上執行以下命令,生成機器碼
java -jar classfinal-fatjar.jar -C
加密后的項目需要設置 javaagent
來啟動,項目在啟動過程中解密class,完全內存解密,不留下任何解密后的文件。
解密功能已經自動加入到 yourpaoject-encrypted.jar
中,所以啟動時 -javaagent
與 -jar
相同,不需要額外的jar包。
密碼讀取順序:參數獲取
>> 環境變量獲取
>> 密碼文件獲取
>> 控制臺輸入
>> GUI輸入
>> 退出
啟動jar項目執行以下命令:注意:如果是win系統 "-pwd 0000000"
這里要用雙引號。
java -javaagent:jerry-encrypted.jar="-pwd 0000000" -jar jerry-encrypted.jar //參數說明 // -pwd 加密項目的密碼 // -pwdname 環境變量中密碼的名字
java -javaagent:yourpaoject-encrypted.jar -jar yourpaoject-encrypted.jar
不加 pwd
參數直接啟動,優先從密碼文件
讀取。
在同級目錄下的classfinal.txt
或jerry-encrypted.classfinal.txt
中寫入密碼。
直接給密碼:classfinal.txt
123456
參數化配置啟動后刪除:classfinal.txt
--pwd 123456 --del yes
這里的del
只要不給false
或no
都會刪除。
項目讀取到密碼后會清空此文件。
沒有找到 密碼文件
就會進入交互輸入模式:先控制臺輸入
還是沒給密碼就會進入 GUI輸入
模式,都不給密碼,就報錯退出了。
控制臺輸入
GUI輸入
到此,相信大家對“Java Class加密工具ClassFinal怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。