代碼隔離java 代碼隔離措施

【轉(zhuǎn)】如何保護Java代碼

以下從技術(shù)角度就常見的保護措施 和常用工具來看看如何有效保護java代碼:1. 將java包裝成exe 特點:將jar包裝成可執(zhí)行文件,便于使用,但對java程序沒有任何保護。不要以為生成了exe就和普通可執(zhí)行文件效果一樣了。這些包裝成exe的程序運行時都會將jar文件釋放到臨時目錄,很容易獲取。常用的工具有exe4j、jsmooth、NativeJ等等。jsmooth生成的exe運行時臨時目錄在exe所在目錄中或是用戶臨時目錄 中;exe4j生成的exe運行時臨時目錄在用戶臨時目錄中;NativeJ生成的exe直接用winrar打開,然后用zip格式修復成一個jar文件,就得到了原文件。如果只是為了使用和發(fā)布方便,不需要保護java代碼,使用這些工具是很好的選擇。2. java混淆器特點:使用一種或多種處理方式將class文件、java源代碼進行混淆處理后生成新的class,使混淆后的代碼不易被反編譯,而反編譯后的代碼難以閱 讀和理解。這類混淆器工具很多,而且也很有成效。缺點:雖然混淆的代碼反編譯后不易讀懂,但對于有經(jīng)驗的人或是多花些時間,還是能找到或計算出你代碼中隱藏的敏感內(nèi)容,而且在很多應用中不是全部代碼都能混淆的,往往一些關鍵的庫、類名、方法名、變量名等因使用要求的限制反而還不能混淆。3. 隔離java程序到服務端特點:把java程序放到服務端,讓用戶不能訪問到class文件和相關配套文件,客戶端只通過接口訪問。這種方式在客戶/服務模式的應用中能較好地保護java代碼。缺點是:必須是客戶/服務模式,這種特點限制了此種方式的使用范圍;客戶端因為邏輯的暴露始終是較為薄弱的環(huán)節(jié),所以訪問接口時一般都需要安全性認證。4. java加密保護特點:自定義ClassLoader,將class文件和相關文件加密,運行時由此ClassLoader解密相關文件并裝載類,要起到保護作用必須自定 義本地代碼執(zhí)行器將自定義ClassLoader和加密解密的相關類和配套文件也保護起來。此種方式能很有效地保護java代碼。缺點:可以通過替換JRE包中與類裝載相關的java類或虛擬機動態(tài)庫截獲java字節(jié)碼。 jar2exe屬于這類工具。5. 提前編譯技術(shù)(AOT) 特點:將java代碼靜態(tài)編譯成本地機器碼,脫離通用JRE。此種方式能夠非常有效地保護java代碼,且程序啟動比通用JVM快一點。具有代表性的是GNU的gcj,可以做到對java代碼完全提前編譯,但gcj存在諸多局限性,如:對JRE 5不能完整支持、不支持JRE 6及以后的版本。由于java平臺的復雜性,做到能及時支持最新java版本和JRE的完全提前編譯是非常困難的,所以這類工具往往采取靈活方式,該用即時編譯的地方還是 要用,成為提前編譯和即時編譯的混合體。缺點:由于與通用JRE的差異和java運用中的復雜性,并非java程序中的所有jar都能得到完全的保護;只能使用此種工具提供的一個運行環(huán)境,如果工具更新滯后或你需要特定版本的JRE,有可能得不到此種工具的支持。 Excelsior JET屬于這類工具。6. 使用jni方式保護特點:將敏感的方法和數(shù)據(jù)通過jni方式處理。此種方式和“隔離java程序到服務端”有些類似,可以看作把需要保護的代碼和數(shù)據(jù)“隔離”到動態(tài)庫中,不同的是可以在單機程序中運用。缺點和上述“隔離java程序到服務端”類似。7. 不脫離JRE的綜合方式保護特點:非提前編譯,不脫離JRE,采用多種軟保護方式,從多方面防止java程序被竊取。此種方式由于采取了多種保護措施,比如自定義執(zhí)行器和裝載器、加密、JNI、安全性檢測、生成可執(zhí)行文件等等,使保護力度大大增強,同樣能夠非常有效地保護java代碼。缺點:由于jar文件存在方式的改變和java運用中的復雜性,并非java程序中的所有jar都能得到完全的保護;很有可能并不支持所有的JRE版本。 JXMaker屬于此類工具。8. 用加密鎖硬件保護特點:使用與硬件相關的專用程序?qū)ava虛擬機啟動程序加殼,將虛擬機配套文件和java程序加密,啟動的是加殼程序,由加殼程序建立一個與硬件相關的 受保護的運行環(huán)境,為了加強安全性可以和加密鎖內(nèi)植入的程序互動。此種方式與以上“不脫離JRE的綜合方式保護”相似,只是使用了專用硬件設備,也能很好地保護java代碼。缺點:有人認為加密鎖用戶使用上不太方便,且每個安裝需要附帶一個。從以上描述中我們可以看出:1. 各種保護方式都有其優(yōu)缺點,應根據(jù)實際選用2. 要更好地保護java代碼應該使用綜合的保護措施3. 單機環(huán)境中要真正有效保護java代碼,必須要有本地代碼程序配合當然,安全都是相對的,一方面看你的保護措施和使用的工具能達到的程度,一方面看黑客的意愿和能力,不能只從技術(shù)上保護知識產(chǎn)權(quán)??傊?,在java 代碼保護方面可以采取各種可能的方式,不可拘泥于那些條條框框。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設、天山網(wǎng)站維護、網(wǎng)站推廣。

怎么防止Java開發(fā)出來的程序被別人反編譯

防止Java開發(fā)出來的程序被別人反編譯有很多種方法,下面給你介紹幾種:

1、隔離Java程序

最簡單的方法就是讓用戶不能夠訪問到Java Class程序,這種方法是最根本的方法,具體實現(xiàn)有多種方式。例如,開發(fā)人員可以將關鍵的Java Class放在服務器端,客戶端通過訪問服務器的相關接口來獲得服務,而不是直接訪問Class文件。這樣黑客就沒有辦法反編譯Class文件。目前,通過接口提供服務的標準和協(xié)議也越來越多,例如 HTTP、Web Service、RPC等。但是有很多應用都不適合這種保護方式,例如對于單機運行的程序就無法隔離Java程序。

2、對Class文件進行加密

為了防止Class文件被直接反編譯,許多開發(fā)人員將一些關鍵的Class文件進行加密,例如對注冊碼、序列號管理相關的類等。在使用這些被加密的類之前,程序首先需要對這些類進行解密,而后再將這些類裝載到JVM當中。這些類的解密可以由硬件完成,也可以使用軟件完成。

3、轉(zhuǎn)換成本地代碼

將程序轉(zhuǎn)換成本地代碼也是一種防止反編譯的有效方法。因為本地代碼往往難以被反編譯。開發(fā)人員可以選擇將整個應用程序轉(zhuǎn)換成本地代碼,也可以選擇關鍵模塊轉(zhuǎn)換。如果僅僅轉(zhuǎn)換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術(shù)進行調(diào)用。

4、代碼混淆

代碼混淆是對Class文件進行重新組織和處理,使得處理后的代碼與處理前代碼完成相同的功能(語義)。但是混淆后的代碼很難被反編譯,即反編譯后得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。從理論上來說,黑客如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是從實際情況來看,由于混淆技術(shù)的多元化發(fā)展,混淆理論的成熟,經(jīng)過混淆的Java代碼還是能夠很好地防止反編譯。

不同保護技術(shù)比較希望能給大家?guī)韰⒖迹?/p>

北大青鳥java培訓:Java代碼質(zhì)量如何提升?

對于一個Java程序員來說,Java代碼質(zhì)量是一定要追求的。

如果你不能夠保證自己的Java代碼的質(zhì)量,想必你很難在一家公司待得長久,并且有很大的晉升發(fā)展空間。

Java代碼質(zhì)量如何提升?安徽電腦培訓認為作為一個Java程序員,這是你必須時常思考,并且還是得采取行動切實提升的。

Java代碼質(zhì)量如何提升?你時常跟Java代碼打交道,你覺得什么樣子的Java代碼是具備高質(zhì)量的呢?高滿足需求性,高度理解性,高度可測試性,高度可擴展性,高度可維護性等等,那么很多人大致的概念是有的,但是具體是怎么樣的,還是有點懵的,那么就讓北大青鳥小編具體為你舉下例子。

比如高滿足需求性,你所編寫的Java代碼,如果不能夠滿足客戶的需求,那么很多時候它就是廢的,盡管在你眼中它相當?shù)耐昝溃悄闼帉懙腏ava代碼一定是能夠滿足客戶需求的。

高度理解性,就是你所編寫的Java代碼,不能夠就你一個人看懂就行了,你還得有的地方稍加注釋,讓其他的人也理解,讓其他人可讀。

Java代碼的高度可測試性:是指軟件發(fā)現(xiàn)故障并隔離定位其故障的能力特性,以及在一定的時間或成本的前提條件下,進行測試的能力。

Java代碼高度可擴展性:即預留以后變更代碼的空間。

Java代碼高度可維護性:軟件研發(fā)完了,是研發(fā)階段的終止,卻是軟件運營維護的開始。

java如何實現(xiàn)會話隔離

在Javaapplet中實現(xiàn)模式對話框的關鍵就是在創(chuàng)建一個對話框的時候要為該對話框指定一個正確的父窗口.因為Applet是Panel類的子類,不可以作為對話框的父窗口,所以首先要獲得applet所在的窗口,作為模式對話框的父窗口.樣例代碼如下:

.....

Dialogd=newDialog(getParentWindow(comp),title);

//comp為applet上的任意一個組件

....

publicvoidgetParentWindow(ComponentcompOnApplet,Stringtitle){

Containerc=compOnApplet.getParent();

while(c!=null){

if(cinstanceofFrame)

return(Frame)c;

c=c.getParent();

}

returnnull;

}

分享名稱:代碼隔離java 代碼隔離措施
標題鏈接:http://muchs.cn/article6/dohecog.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、虛擬主機、微信小程序、App設計、云服務器、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作