亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

運(yùn)用加密技術(shù)保護(hù)Java源代碼(4)

瀏覽:22日期:2024-06-29 16:17:00
內(nèi)容: if (clasz != null)return clasz;// 下面是定制部分try {// 讀取經(jīng)過(guò)加密的類(lèi)文件byte classData[] = Util.readFile( name+'.class' );if (classData != null) {// 解密...byte decryptedClassData[] = cipher.doFinal( classData );// ... 再把它轉(zhuǎn)換成一個(gè)類(lèi)clasz = defineClass( name, decryptedClassData,0, decryptedClassData.length );System.err.println( '[DecryptStart: decrypting class '+name+']' );}} catch( FileNotFoundException fnfe ) {}// 必需的步驟2:如果上面沒(méi)有成功// 我們嘗試用默認(rèn)的ClassLoader裝入它if (clasz == null)clasz = findSystemClass( name );// 必需的步驟3:如有必要,則裝入相關(guān)的類(lèi)if (resolve && clasz != null)resolveClass( clasz );// 把類(lèi)返回給調(diào)用者return clasz;} catch( IOException ie ) {throw new ClassNotFoundException( ie.toString());} catch( GeneralSecurityException gse ) {throw new ClassNotFoundException( gse.toString());}}}對(duì)于未經(jīng)加密的應(yīng)用,正常執(zhí)行方式如下: % java App arg0 arg1 arg2對(duì)于經(jīng)過(guò)加密的應(yīng)用,則相應(yīng)的運(yùn)行方式為:% java DecryptStart key.data App arg0 arg1 arg2DecryptStart有兩個(gè)目的。一個(gè)DecryptStart的實(shí)例就是一個(gè)實(shí)施即時(shí)解密操作的定制ClassLoader;同時(shí),DecryptStart還包含一個(gè)main過(guò)程,它創(chuàng)建解密器實(shí)例并用它裝入和運(yùn)行應(yīng)用。示例應(yīng)用App的代碼包含在App.java、Foo.java和Bar.java內(nèi)。Util.java是一個(gè)文件I/O工具,本文示例多處用到了它。完整的代碼請(qǐng)從本文最后下載。五、注意事項(xiàng) 我們看到,要在不修改源代碼的情況下加密一個(gè)Java應(yīng)用是很容易的。不過(guò),世上沒(méi)有完全安全的系統(tǒng)。本文的加密方式提供了一定程度的源代碼保護(hù),但對(duì)某些攻擊來(lái)說(shuō)它是脆弱的。 雖然應(yīng)用本身經(jīng)過(guò)了加密,但啟動(dòng)程序DecryptStart沒(méi)有加密。攻擊者可以反編譯啟動(dòng)程序并修改它,把解密后的類(lèi)文件保存到磁盤(pán)。降低這種風(fēng)險(xiǎn)的辦法之一是對(duì)啟動(dòng)程序進(jìn)行高質(zhì)量的模糊處理。或者,啟動(dòng)程序也可以采用直接編譯成機(jī)器語(yǔ)言的代碼,使得啟動(dòng)程序具有傳統(tǒng)執(zhí)行文件格式的安全性。 另外還要記住的是,大多數(shù)JVM本身并不安全。狡猾的黑客可能會(huì)修改JVM,從ClassLoader之外獲取解密后的代碼并保存到磁盤(pán),從而繞過(guò)本文的加密技術(shù)。Java沒(méi)有為此提供真正有效的補(bǔ)救措施。 不過(guò)應(yīng)該指出的是,所有這些可能的攻擊都有一個(gè)前提,這就是攻擊者可以得到密匙。如果沒(méi)有密匙,應(yīng)用的安全性就完全取決于加密算法的安全性。雖然這種保護(hù)代碼的方法稱不上十全十美,但它仍不失為一種保護(hù)知識(shí)產(chǎn)權(quán)和敏感用戶數(shù)據(jù)的有效方案。 參考資源 在運(yùn)行時(shí)刻更新功能模塊。介紹了一個(gè)利用類(lèi)庫(kù)加載器ClassLoader 實(shí)現(xiàn)在運(yùn)行時(shí)刻更新部分功能模塊的Java程序,并將其與C/C++中實(shí)現(xiàn)同樣功能的動(dòng)態(tài)鏈接庫(kù)方案進(jìn)行了比較。 Java 技巧 105:利用 JWhich 掌握類(lèi)路徑。展示一個(gè)簡(jiǎn)單的工具,它可以清楚地確定類(lèi)裝載器從類(lèi)路徑中載入了什么 Java 類(lèi)。 要了解更多的 Java 安全信息,請(qǐng)閱讀 java.sun.com的 Java Security API 頁(yè)。 如何封鎖您的(或打開(kāi)別人的) Java 代碼。Java 代碼反編譯和模糊處理的指南。 使您的軟件運(yùn)行起來(lái):擺弄數(shù)字。真正安全的軟件需要精確的隨機(jī)數(shù)生成器。 下載本文代碼:EncryptedJavaClass_code.zip關(guān)于作者 俞良松,軟件工程師,獨(dú)立顧問(wèn)和自由撰稿人。最初從事PB和Oracle開(kāi)發(fā),現(xiàn)主要興趣在于Internet開(kāi)發(fā)。您可以通過(guò) [email protected] 和我聯(lián)系。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: zoofilia活体videos新 | 日本69sex护士www | 欧美成人高清免费大片观看 | 国产视频你懂的 | 91蝌蚪九色 | 国产一区在线视频 | 成年做羞羞免费观看视频网站 | 国产一区二区三区四区在线污 | 一级毛片免费一级直接观看 | 亚洲国产精品成人综合久久久 | 国产又色又爽的视频免费 | 国产精品19禁在线观看2021 | 国产成人精品视频一区 | 国产综合图区 | 亚洲黄色三级视频 | 五月婷婷丁香久久 | 色偷偷尼玛图亚洲综合 | 欧美啊啊 | 亚洲涩色| 毛茸茸年轻成熟亚洲人 | 成人免费一区二区三区在线观看 | 精品视频在线观看一区二区 | 国产主播福利精品一区二区 | 91仓本c仔约高挑嫩模在线 | 福利视频在线观看www. | 国产精品黄网站免费观看 | 欧美黑人成人www在线观看 | 久久久精品视频在线观看 | 看黄色一级视频 | 国产亚洲精品综合在线网址 | 久草免费资源在线 | 国产色产综合色产在线观看视频 | 中文字幕s级优女区 | 精品久久看 | 成人国产精品毛片 | aaa欧美| 高清成人综合 | 亚洲欧美h| 国产性videostv另类极品 | 五月激激激综合网色播免费 | 老头做爰xxxx视频 |