国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

專家和您一起談談java加殼的問題

2019-11-18 15:35:10
字體:
來源:轉載
供稿:網友

  在C世界,對代碼進行加密,主要通過加殼的方式。所謂加殼,就是先將程序代碼加密,然后用特定的程序加載器,將代碼解密后加載進內存,這樣可以在防止代碼的反編譯,當然,有加殼工具,也有解殼工具,雖然不能100%防止crack,但仍然給代碼增加一層有力的保護。

  然而在java世界,保護代碼是件很困難的事情,因為class文件非常規范,極易反編譯,且反編譯后的代碼清楚可讀。常見的保護辦法是使用混淆器,打亂class和function以及變量的名字,可以干擾反編譯后的代碼的可讀性。雖然簡單提高了代碼的安全性,但還僅僅相當于未加殼的C程序。

  java可以加殼嗎?以前我認為這是不可能的,因為動態加載代碼這樣的內存級別的操作,java無法做到,除非使用JNI(Java Native Interface),調用自己編寫的C代碼,在C代碼中實現動態加載java代碼。但是,C如何加載java代碼呢?這需要對JVM相當的了解。所以當時的我認為這是不可能的。

  然而,最近接觸的一些知識告訴我——java也可以加殼!!

  1.URLClassLoader。用URLClassLoader可以在java程序的運行期間,再將文件夾或者jar加入到classpath中,這個特性事實上就是動態加載。既然可以動態加載class的文件夾或者jar,為何不可以加載加密后的classes呢,將classes用自己的方式加密,在URLClassLoader調用時,使用自己的方式解密。不就是達到了加殼的目的了嗎?不過解密的代碼放在何處是個問題,就是說解殼器的代碼暴露在外,還是很危險的。

  2.javassist。這實在是一個非常神奇的新技術,我是在學習Tapestry5時第一次碰到這個包的,他可以動態創建java字節碼,甚至可以修改你已經寫好的函數,比如你的getter和setter,只是簡單的讀取和賦值,你可以在Runtime用他修改你的getter和setter,讓你的getter和setter每次調用時都可以觸發某些代碼。借助這項神奇的技術,一定可以實現更強大的動態加載,加殼也就有了可能。

  讓我有些不爽的是,javassist又是小日本創建的項目。

  http://www.open-open.com/open54954.htm

  Javassist是一個開源的分析、編輯和創建Java字節碼的類庫。是由東京技術學院的數學和計算機科學 系的 Shigeru Chiba 所創建的。它已加入了開放源代碼JBoss 應用服務器項目,通過使用Javassist對字節碼操作為JBoss實現動態AOP框架。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄平县| 尚志市| 革吉县| 潞西市| 宾阳县| 绥滨县| 天峻县| 岗巴县| 逊克县| 万年县| 成武县| 汉阴县| 子长县| 南华县| 凯里市| 绥滨县| 保靖县| 昌图县| 互助| 灵山县| 富民县| 镶黄旗| 黄石市| 嘉荫县| 喀喇沁旗| 苍南县| 肥东县| 全椒县| 张北县| 抚宁县| 土默特左旗| 绥棱县| 祥云县| 翁源县| 黎川县| 长寿区| 治多县| 永平县| 吴川市| 荆州市| 高邮市|