java的jar包加密及使用
由於項目要求(雖然我覺得我寫的代碼沒什麽高深技術可言...),寫好的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包加密及使用