天天看點

代碼保護(三) java代碼保護方案

Java防止反編譯的一種解決方案

一、使用ProGuard對代碼進行混淆

1   下載下傳并啟動ProGuard代碼混淆器

代碼保護(三) java代碼保護方案

2   Input/output中選擇要加密的Jar檔案,并導入該項目使用的Jar

代碼保護(三) java代碼保護方案

3   設定混淆參數選項

代碼保護(三) java代碼保護方案

4   儲存混淆配置

代碼保護(三) java代碼保護方案

5   重新啟動ProGuard載入儲存的配置檔案

代碼保護(三) java代碼保護方案

6   混淆成功

代碼保護(三) java代碼保護方案

7   使用JD-gui反編譯軟體進行混淆前後對比

代碼保護(三) java代碼保護方案

結論:使用代碼混淆僅增加了程式了解的難度,程式的邏輯及流程仍然清晰可見,(但可以将函數名、參數名、設定的更淩亂一些,進一步增加閱讀難度)。

二、使用Excelsior JET将java可執行程式轉化為C++可執行程式

1   安裝并啟動Excelsior JET

代碼保護(三) java代碼保護方案

2   釋出運作

代碼保護(三) java代碼保護方案

3   再系統盤内找不到該程式運作的jar檔案,通過查殼工具PEID檢視該可執行檔案,未加密

代碼保護(三) java代碼保護方案

4   通過靜态反彙編工具OD檢視該檔案彙編代碼

代碼保護(三) java代碼保護方案

至此,對該java項目的逆向工程的難度同C++寫的程式一樣困難,較難以得到程式的源代碼。在此操作之上還可以進一步采取手段阻撓對源代碼的逆向工程,如下所示的加殼操作。

三、使用VMProtect等工具對.exe檔案進行加殼保護

1   使用VMProtect工具對該程式加殼

代碼保護(三) java代碼保護方案

2   在使用VirboxProtector增加第二層保護殼時彈出如下提醒

代碼保護(三) java代碼保護方案

猜測是VMProtect已經進行了虛拟化保護,在使用同樣機制的VirboxProtector加密後出現了一些問題。

3   在使用UPX加殼軟體增加第二層保護殼時同樣提醒出現了錯誤

代碼保護(三) java代碼保護方案

這表明已經成功的對該軟體增加了VMP保護殼,軟體的安全性得到了進一步的提升。

繼續閱讀