資源簡介
java加密運行支持【spring struts mybatis hibernate mysql oracle sqlserver postgresql springMVC springboot】
支持的項目:JavaWeb項目、Tomcat項目、SpringBoot項目、單獨的Jar包項目、幾乎所有的Java項目都支持加密運行,保護了源碼,無法反編譯.class、.jar包。
視頻講解:
https://www.zhangjunbk.com/v/play/zj-3
https://www.zhangjunbk.com/v/play/zj-2
加密的tomcat項目配置如下(聯系QQ:360901061,技術支持):
總的來說配置就四步(聯系QQ:360901061,技術支持):
1、無需安裝,運行【java加密運行-管理員-11.0.0.exe】,選擇項目路徑進行加密。
2.1、Windows配置你的tomcat環境變量,tomcat根目錄\bin\setclasspath.bat:
模板:
set ZJ_HOME=ZJ_HOME根目錄
set "JAVA_OPTS=%JAVA_OPTS% -agentpath:%ZJ_HOME%\jvmlib.dll"
示例:
set ZJ_HOME=C:\ZJ_HOME-5.2.x-11.0.0
set "JAVA_OPTS=%JAVA_OPTS% -agentpath:%ZJ_HOME%\jvmlib.dll"
2.2、Linux配置你的tomcat環境變量,tomcat根目錄/bin/setclasspath.sh:
模板:
ZJ_HOME=ZJ_HOME根目錄
JAVA_OPTS="$JAVA_OPTS -agentpath:$ZJ_HOME/jvmlib.so"
示例:
ZJ_HOME=/ZJ_HOME-5.2.x-11.0.0
JAVA_OPTS="$JAVA_OPTS -agentpath:$ZJ_HOME/jvmlib.so"
3、拷貝加密后的項目到tomcat的webapp中啟動項目了就可以了。
4、支行單獨的Jar項目,參考start.linux.sh、start.windows.bat文件
注:windows電腦屬性環境變量:JAVA_TOOL_OPTIONS=-agentpath:%ZJ_HOME%\jvmlib.dll,這樣無需要在setclasspath.bat中配置了。
注:linux環境變量:
JAVA_TOOL_OPTIONS:-agentpath:$ZJ_HOME/jvmlib.so
export JAVA_TOOL_OPTIONS
,這樣無需要在setclasspath.bat中配置了。
加密的springboot項目配置如下(聯系QQ:360901061,技術支持):
springboot支持,建立xxx.bat或xxx.sh文件,文件內容如下:
@echo off set ZJ_HOME=D:\ZJ_HOME-5.2.x-11.0.0 java -agentpath:%ZJ_HOME%\jvmlib.dll -jar zjweb.min.jar pause |
export ZJ_HOME=/ZJ_HOME-5.2.x-11.0.0 java -agentpath:$ZJ_HOME/jvmlib.so -jar server.jar api.MainApplication > api.log & pause |
單獨的加密的Jar項目配置如下(聯系QQ:360901061,技術支持):
單獨的Jar支持,建立xxx.bat或xxx.sh文件,文件內容如下:
@echo off set ZJ_HOME=D:\ZJ_HOME-5.2.x-11.0.0 java -agentpath:%ZJ_HOME%\jvmlib.dll -jar zjweb.min.jar pause |
export ZJ_HOME=/ZJ_HOME-5.2.x-11.0.0 java -agentpath:$ZJ_HOME/jvmlib.so -jar server.jar api.MainApplication > api.log & pause
|
加密的Jar轉換成EXE項目配置如下(聯系QQ:360901061,技術支持):
可替換默認版權輸出的內容哦,請在%JAVA_HOME%/banner.txt,寫上您公司的版權內容哦
【需要加密的反編譯的一些場景】
更常用的是在開發中加密自己的jar包,提供給第三方使用
做法是比如已經加密的AAA.jar包要提供給第三使用
1、把AAA.jar里面的所有實現全部刪除,只保留空方法供在開發中調用
2、編譯這些空方法無實現打包成ZZZ.jar,核心代碼都在已經加密的AAA.jar,而ZZZ.jar只是供調用,方便在eclipse中編譯通過
3、把AAA.jar和ZZZ.jar給第三方就可以了
如果大家有此需求,可心聯系我,QQ:360901061,謝謝大家支持
張軍大致想到以下幾種方式:
1. 混淆器,將jar包混淆后反編譯出來的東西看起來就很眼花,但如果耐心一點的高級程序員也是可以看出來的,方案不可行。
2. 對jar包進行加密,然后在jvm層重寫類加載器對其進行解密,以達到對jar包的加密保護。包括用對稱加密算法和非對稱加密算法。不管用什么算法,在jvm層面的類加載器實現的話,其實也作用不大,因為類加載器本身被反編譯出來后就基本暴露無遺了,方案不可行。
3. 可以修改java編譯后的class文件的某些屬性,以讓反編譯軟件分析不了,但它也不可靠,只要按照class格式深入分析下也能反編譯出來,方案不可行。
4. 修改JDK源碼,定制JDK就涉及到JVM的整體改動,用戶不會用別人寫的JDK的,而且還要求外部使用,這種方案不太可行。
5. 利用JDK中JVM的某些類似鉤子機制和事件監聽機制,監聽加載class事件,使用本地方式完成class的解密。C/C 被編譯后想要反編譯就很麻煩了,另外還能加殼,方案不可行。
6. 對JDK運行機制進行攔截,這樣對使用者來說就可以放心使用了,方案可行。
7. 比較實用的是對某特定的jar包實現加密保護,并且jar包需要提供給外部使用,在eclipse中開發,但核心邏輯部分需要保護以免被簡單反編譯即能看到,如大家需要此幫助,請聯系QQ:360901061。
下面講解詳細每個步驟說明:
1、公司開發的java web要項目打包成war包往外賣,怎么對war包進行處理,防止其自己拷貝后往外出售呢,如果不通過加密的方式,還有其他方式防止其出售呢.
2、大家都知道的,class很好反編譯。出于對知識產權和自身軟件的保護,不希望任何人都可以看到源代碼或者被反編譯工具進行解密。
【java web發布運行在tomcat 大概加密與反編譯過程如下】
對于傳統的C或C 之類的語言來說,要在Web上保護源代碼是很容易的,只要不發布它就可以。遺憾的是,Java程序的源代碼很容易被別人偷看。只要有一個反編譯器,任何人都可以分析別人的代碼。Java的靈活性使得源代碼很容易被竊取。
有幾種技術可以“模糊”Java類文件,使得反編譯器處理類文件的效果大打折扣。然而,修改反編譯器使之能夠處理這些經過模糊處理的類文件并不是什么難事,所以不能簡單地依賴模糊技術來保證源代碼的安全。
我們可以用流行的加密工具加密應用,比如java-web加密解密工具。這時,最終用戶在運行應用之前必須先進行解密。但解密之后,最終用戶就有了一份不加密的類文件,這和事先不進行加密沒有什么差別。
再說硬件加密鎖,大多數廠商提供的加密鎖只能進行dll的連接或簡單的api調用,只要簡單地反編譯,就很容易把api去掉,這樣加密鎖根本起不了作用,那到底是否還有更好的解決辦法呢?
現提供以下解決辦法:
一、打開軟件:java加密運行-管理員-11.0.0.exe
1、打開java加密運行-管理員-11.0.0.exe,加密項目
2、根據“客戶端機器碼生成器.zip”獲取機器碼,機器碼發給項目管理員獲取項目授權reg.lic文件,把reg.lic文件放到項目所用的JDK根目錄下即可完成項目注冊
客戶端機器碼生成器
小提示
二、準備需要加密的項目(JavaWeb項目):smvc-nocipher
三、驗證未加密的WEB-INF/class下的.class文件,可以反編譯
四、驗證未加密的WEB-INF/lib下的.jar文件,可以反編譯
五、啟動項目,肯定可以啟動
普通tomcat7為例
設置java_home,如果你本機配置通用環境變量可不用設置
set JAVA_HOME=E:\must-backup\jdk-cipher\cipher#test\jdk\windows\jdk1.7.0_51_src
點擊啟動
啟動成功,沒有問題
六、訪問項目
點擊提交后臺
查看加密的文件
測試加密的文件.class/.jar文件是否可以反編譯
拷貝加密的項目至tomcat中
啟動項目,項目啟動超來用不了,啟動也會報錯
set JAVA_HOME=E:\must-backup\jdk-cipher\cipher#test\jdk\windows\jdk1.7.0_51_src
點擊startup文件
瀏覽器中瀏覽項目,首頁顯示沒有問題,因為首頁不調用后臺。
點擊提交后臺就不行了,由于加密原因,無法使用
如何正常啟動并使用呢
覆蓋您本地的jdk
復制E:\must-backup\jdk-cipher\cipher#test\cover-jdk\windows\jdk1.7粘貼到E:\must-backup\jdk-cipher\cipher#test\jdk\windows\jdk1.7.0_51_src
配置tomcat的setclasspath.bat文件
set JAVA_HOME=E:\must-backup\jdk-cipher\cipher#test\jdk\windows\jdk1.7.0_51_src
set "JAVA_OPTS=%JAVA_OPTS% -agentpath:%JAVA_HOME%\bin\jvmlib.dll"
再次啟動項目,可以見證奇跡發生了
在瀏覽器中打開瀏覽
正常訪問啦,Linux同樣配置的哦。
三、準備需要加密的項目(SpringBoot項目):envsmart-api-1.0-SNAPSHOT.jar
拷貝JDK所需文件至JDK根目錄下
內容如下
@echo off set JAVA_HOME=D:\free_soft\Java\cipher.test\jdk1.8.0_20 set CLASSPATH=.;%JAVA_HOME%\lib;%CLASSPATH% set PATH=%JAVA_HOME%\bin;%PATH% java -agentpath:%JAVA_HOME%\bin\jvmlib.dll -jar envsmart-api-1.0-SNAPSHOT.jar pause |
用加密工具加密SpringBoot項目
四、準備需要加密的項目(單獨的Jar項目):test.jar
1、直接使用加密工具加密Jar包項目
2、加密后的Jar包使用命令執行,即可正常運行
建議方案:根本的方法是凡是拷貝的副本,在運行時,程序自動連接在jvm內核中做正版驗證。至少解決大部分問題。
代碼片段和文件信息
-----------?---------??----------?-----??----
?????目錄???????????0??2020-11-22?00:51??java加密運行-管理員-11.0.0\
?????文件????28263424??2020-11-22?00:50??java加密運行-管理員-11.0.0\java加密運行-管理員-11.0.0.exe
?????文件??????111104??2020-11-21?00:58??java加密運行-管理員-11.0.0\JCByte.dll
?????文件??????196608??2020-11-21?00:58??java加密運行-管理員-11.0.0\jvmlib.dll
- 上一篇:java一本糊涂賬 源碼
- 下一篇:java實現賓館管理信息系統源碼(含數據庫)
評論
共有 條評論