資源簡(jiǎn)介
眾所周知,Java編譯后的Jar包和Class文件,可以輕而易舉的使用反編譯工具(如JD-GUI)進(jìn)行反編譯,拿到源碼。為了保護(hù)自己發(fā)布的Jar包和Class文件,采用的方式大多是混淆方式,這種方式對(duì)于Class文件的加密是不徹底的,還是能夠通過(guò)分析得出核心算法。本工具是采用jvmti方式對(duì)Class文件進(jìn)行加密,使用C++生成加密和解密庫(kù),先用加密庫(kù)對(duì)Jar包進(jìn)行加密,將加密后的Jar包及解密庫(kù)文件發(fā)布出去,執(zhí)行時(shí)候需要JVM引入解密庫(kù)文件,解密后執(zhí)行。c++的.dll文件和.so文件的破解難度是很大的,這就能有效的保護(hù)軟件和代碼的知識(shí)產(chǎn)權(quán).
使用方法:
1.打開(kāi)windows命令行(運(yùn)行=>cmd=>回車),在命令行中 進(jìn)入 EncryptJar目錄
2.執(zhí)行 java -jar encrypt.jar
3.輸入h,然后回車,可以看到幫助菜單
4.輸入3,然后按回車鍵,進(jìn)入加入jar文件功能
5.輸入要加密的jar文件的路徑
6.提示輸入秘鑰(key)的時(shí)候,直接回車,不要輸入任何字符(否則后面classhook將不可解密加密后的jar包)
7.輸入目標(biāo)路徑(加密后的jar文件路徑,此處要注意:jar文件名要保持相同,將加密后的文件保存到不同的目錄)
8.將加密后的jar包,替換原來(lái)的沒(méi)有加密的jar包,與要發(fā)布的程序一起進(jìn)行發(fā)布.(一般替換lib目錄下對(duì)應(yīng)的jar包即可)
9.加密后的jar包運(yùn)行方法:
windows下:
拷貝libClassHook.dll文件到程序的根目錄(通常為要執(zhí)行的jar程序的根目錄)
使用以下命令啟動(dòng)程序:
java -agentlib:libClassHook -jar xxxxxxxxxxx.jar
則在運(yùn)行過(guò)程中會(huì)自動(dòng)進(jìn)行解密操作(解密過(guò)程是運(yùn)行過(guò)程中用c++的dll進(jìn)行解密的,可以有效防止破解class文件)
如果執(zhí)行過(guò)程報(bào)錯(cuò),可將程序根目錄添加到環(huán)境變量path中去
Linux下:
拷貝libClassHook.so到程序的根目錄(通常為要執(zhí)行的jar程序的根目錄)
使用以下命令啟動(dòng)程序:
java -agentlib:ClassHook -jar xxxxxxxxxxx.jar (這里要?jiǎng)h除掉lib,linux系統(tǒng)下會(huì)自動(dòng)補(bǔ)全)
則在運(yùn)行過(guò)程中會(huì)自動(dòng)進(jìn)行解密操作(解密過(guò)程是運(yùn)行過(guò)程中用c++的dll進(jìn)行解密的,可以有效防止破解class文件)
如果執(zhí)行過(guò)程報(bào)錯(cuò),可以在程序根目錄下執(zhí)行以下語(yǔ)句:export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH 或?qū)ibClassHook.so
拷貝到/usr/lib目錄中去。
支持操作系統(tǒng):加密請(qǐng)?jiān)趙indows64位系統(tǒng)并安裝了64位jdk環(huán)境下進(jìn)行。
需要解密運(yùn)行的程序支持LINUX(64位)和windows(64位)安裝了JDK1.8以上的系統(tǒng)。
測(cè)試程序: (t_lib目錄下的jar包為經(jīng)過(guò)加密的jar包)
java -agentlib:libClassHook -jar test.jar

代碼片段和文件信息
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????23478??2019-03-02?18:49??libClassHook.so
?????文件???????1745??2019-03-02?22:28??readme.txt
?????文件???????1976??2019-03-02?15:10??test.jar
?????文件???????1407??2019-03-02?14:38??t_lib\jiamiqian.jar
?????文件??????75031??2019-03-02?21:58??encrypt.dll
?????文件??????16424??2019-03-02?21:49??encrypt.jar
?????文件??????93716??2019-03-02?18:49??libClassHook.dll
?????目錄??????????0??2019-03-02?18:43??t_lib
-----------?---------??----------?-----??----
???????????????213777????????????????????8
-----------?---------??----------?-----??----
?????文件??????23478??2019-03-02?18:49??libClassHook.so
?????文件???????1745??2019-03-02?22:28??readme.txt
?????文件???????1976??2019-03-02?15:10??test.jar
?????文件???????1407??2019-03-02?14:38??t_lib\jiamiqian.jar
?????文件??????75031??2019-03-02?21:58??encrypt.dll
?????文件??????16424??2019-03-02?21:49??encrypt.jar
?????文件??????93716??2019-03-02?18:49??libClassHook.dll
?????目錄??????????0??2019-03-02?18:43??t_lib
-----------?---------??----------?-----??----
???????????????213777????????????????????8
評(píng)論
共有 條評(píng)論