目前網上通用有幾種方法:
- 直接屏蔽用戶訪問到程序代碼(人為上,物理上)
- 程序封裝,避免以jar包、war包的方式啟動
- java類文件加密
- java類文件混淆
1、程序封裝
windows部署,可以把jar包打包成exe文件,這樣屏蔽了jar包直接暴露出來。網上有一些jar-to-exe的工具
Linux部署,可以將jar包啟動,配置成服務,用服務啟動
2、java類文件加密
這種是指,將類文件的內容通過加密,可以導致類文件無法被正常反編譯。並且當加載類文件前,需要將類文件解密。
- 將打包后的類文件,通過加密方法加密
- 自定義classLoader,重寫類加載方法,讀取類文件內容后,先解密,再加載
3、代碼混淆
代碼混淆是指,將程序類名、方法名、變量名等,進行重命名成隨機的字符。這樣反編譯后的結果,你看到的代碼可能是:類似a、b、c這樣的代碼,沒有可讀性。
這樣及時反編譯成功了,也不能很方便的看懂代碼的意義。從而達到目的。即使要看懂,也要花費很多時間。