不小心把公司的jar包給解密了。。。很尷尬,研究一下。。。
轉載自 JVM層對jar包字節碼加密
幾個思路
大致想到以下幾種方式:
- 混淆器,將jar包混淆後反編譯出來的東西看起來就很眼花,但如果耐心一點也是可以看出來的。eg:Jocky (一款混淆代碼的工具,)
- 對jar包進行加密,然後在Java層重寫類加載器對其進行解密,以達到對jar包的加密保護。包括用對稱加密算法和非對稱加密算法。不管用什麼算法,在Java層面的類加載器實現的話,其實也作用不大,因爲類加載器本身被反編譯出來後就基本暴露無遺了。 我司是用的這種方法。。。
- 可以修改java編譯後的class文件的某些屬性,以讓反編譯軟件分析不了,但它也不可靠,只要按照class格式深入分析下也能反編譯出來。
- 修改JDK源碼,定製JDK就涉及到JVM的整體改動,而且還要求外部使用,不太可行。
- 利用JDK中JVM的某些類似鉤子機制和事件監聽機制,監聽加載class事件,使用本地方式完成class的解密。C/C++被編譯後想要反編譯就很麻煩了,另外還能加殼。