1. 程式人生 > >java的jar包加密及使用

java的jar包加密及使用

格式 () pat 合作 2.0 alt port input www

由於項目要求(雖然我覺得我寫的代碼沒什麽高深技術可言...),寫好的jar包需要做一定加密處理

這裏提供兩種辦法,一種奇葩,一種通用

1. 直接修改jar文件:

具體步驟:

  在代碼中插入一段不會運行的到的代碼

1     private class Invalid{
2         private Invalid() {
3             
4         }
5     }

  使用eclipse打包文件,右鍵export > java > JAR file > finish

  使用解壓軟件打開jar包。記事本打開...$Invalid.class文件,去掉裏面的d

  # 最好另存外面,然後把裏面的刪了再拖進來,貌似不能直接保存

技術分享

加密效果:

  好像解壓後class文件仍舊可以破解

方法缺陷:

  如上

2.使用Proguard混亂工具

具體步驟:

  下載Proguard

  推薦下載5.X版本,和java8更兼容,而4.X版本和java7兼容   

  # 不然會出現Unsupported class version number [52.0] 的錯誤

  可以在CSDN上下載(http://download.csdn.net/download/kong_gu_you_lan/9637131)

  # 因為下這個做了好久的獎賞任務。。有個是郵箱驗證成功出來的兩個字是什麽,直接填了“登錄”,哈哈

  下載後解壓,點開Proguard5.X>bin>proguardgui.bat

  使用Proguard

  左側input/output,在右邊add input添加需要加密jar包,add output自己命名一個導出jar包,下方的library中,有一個默認的rt.jar,如果沒有引入什麽自定義jar文件,直接這個默認就好

  左側obfuscation,選擇圖中這幾項即可,其中第2、3個勾勾對應的文件a.txt是混淆函數名,b.txt是混淆類名

  # 其實就是瞎編幾個類名和函數名,一個名字占一行

  技術分享

   左側Shrinking,最上面的Shrink去掉

  # 不然會如下報錯,The output jar is empty. Did you specify the proper ‘-keep‘ options?

  其他默認,點擊左側Process > Process 加密完成

加密效果:

  還可以

方法缺陷:

  無法對抗功能更加強大的反編譯軟件

===================================================================

補:方才得知,合作方使用.net編程,jar包不能用,需要轉換成dll格式,這裏也順便說了吧。。

轉換步驟:

  下載IKVM轉換工具http://www.ikvm.net/download.html

  解壓,並設置系統 > 高級系統設置 > 環境變量 > 系統變量path:添加ikvm中bin文件路徑

  轉換命令:ikvmc -out:XXXX.dll XXX.jar

參考博文:

  http://blog.csdn.net/a351945755/article/details/21953651 jar轉換成dll

java的jar包加密及使用