當前位置:首頁 » 編程語言 » java保護

java保護

發布時間: 2022-06-07 08:35:18

❶ 公司的java開發代碼可以加密保護嗎

介面傳參可以保護,
寫完的代碼不同的編譯應該也算一種保護,
文件應該可以設置查閱許可權,應該也是一種保護,
...其他大同小異,開發中代碼沒法保護,你總不能邊寫代碼,邊編譯.然後你自己可以看得懂嗎

❷ Java的安全機制有哪些

》類裝載器結構
(class
loader)
》class文件檢查器
(the
class
file
verifier)
》內置於Java虛擬機(及語言)的安全特性
》安全管理器及Java
API
(security
manager)
在Java沙箱中,類裝載器體系結構是第一道防線。它在三個方面對Java的沙箱起作用:
1>它防止惡意代碼區干涉善意的代碼
2>它守護了被信任的代碼的邊界
3>它將代碼歸於某類(稱為保護域),該類確定了代碼可以進行哪種操作
Class文件檢查器:
Class文件檢查器保證裝載的class文件內容有正確的內部結構,並且這些class文件互相間協調一致。Class文件檢查器實現的安全目標之一就是程序的健壯性。如果某個有漏洞的編譯器,或某個聰明的黑客,產生了一個class文件,而這個class文件中包含了一個方法,則合格方法的位元組碼中含有一條跳轉到方法之外的指令,那麼,一旦這個方法被調用,它將導致虛擬機的崩潰,所以,處於對健壯性的考慮,由虛擬機檢驗它裝載的位元組碼的完整性非常重要。
Class文件檢查器要進行四趟獨立的掃描來完成它的操作。
第一趟:Class文件的結構檢查
在這一趟掃描中,對每一段將被當做類型導入的位元組序列,Class文件檢查器都會確認它是否符合JavaClass文件的節本結構。在這一趟檢查中檢查器會進行很多檢查例如:每個Class文件都必須以四個同樣的位元組開始:0xCAFEBABE。因為這個魔數Class文件分析器會很容易判斷出某個文件具有明顯問題而加以拒絕。檢查器還必須確認在Class文件中聲明的版本號和次版本號,這個版本號必須在這個虛擬機實現可以支持的范圍之內。而且第一趟掃描還必須確認這個Class文件有沒有被刪減。總之第一趟掃描的目的就是保證這個位元組序列正確的定義了一個新類型。
第二趟:類型數據的語義檢查
第二趟掃描,檢查器要查看每個組成部分,確認它們是否是其所屬類型的實例,他們的結構是否正確。另外還要檢查這個類本身是否符合特定的條件,它們是由Java編程語言規定的。例如,檢查器強制規定除Object類以外的類必須有一個超類,或者檢查final類有沒有被子化等。
第三趟:位元組碼驗證
這一趟是要確保採用任何路徑在位元組碼流中都得到一個確定的操作碼,確保操作數棧總是包含正確的數值以及正確的類型。
第四趟:符號引用的驗證
在動態鏈接的過程中,如果包含在一個Class文件中的符號引用被解析時,Class文件檢查器要進行第四趟檢查。第四趟掃描僅僅是動態鏈接過程的一部分。當一個Class文件被裝載時,它包含了對其他類的符號引用以及它們的欄位和方法。一個符號引用是一個字元串,它給出了名字,並且可能還包含了其他關於這個被引用項的信息------這些信息必須足以唯一的識別一個類、方法、欄位。這樣對於其他類的符號引用必須給出這個類的全名;對於其他類的欄位的符號引用必須給出類名、欄位名以及欄位描述符;對於其他類中的方法的引用必須給出類名、方法名以及方法的描述符。
所謂的動態鏈接是一個將符號引用解析為直接引用的過程。
此外,由於Java程序是動態鏈接的,所以Class文件檢查器在進行第四次掃描中,必須檢查相互引用類之間的兼容性。
除此之外,Java虛擬機還有一些內置的安全特性:
》類型安全的引用轉換
》結構化的內存訪問
》自動垃圾收集(不必顯式地釋放被分配的內存)
》空引用檢查
通過保證一個Java程序只能使用類型安全的、結構化的方法去訪問內存,Java虛擬機使得Java程序更為健壯。

❸ 如何有效的防止Java程序被反編譯和破解

由於Java位元組碼的抽象級別較高,因此它們較容易被反編譯。下面介紹了幾種常用的方法,用於保護Java位元組碼不被反編譯。通常,這些方法不能夠絕對防止程序被反編譯,而是加大反編譯的難度而已,因為這些方法都有自己的使用環境和弱點。
1.隔離Java程序
最簡單的方法就是讓用戶不能夠訪問到Java Class程序,這種方法是最根本的方法,具體實現有多種方式。例如,開發人員可以將關鍵的Java Class放在伺服器端,客戶端通過訪問伺服器的相關介面來獲得服務,而不是直接訪問Class文件。這樣黑客就沒有辦法反編譯Class文件。目前,通過介面提供服務的標准和協議也越來越多,例如 HTTP、Web Service、RPC等。但是有很多應用都不適合這種保護方式,例如對於單機運行的程序就無法隔離Java程序。
2.對Class文件進行加密
為了防止Class文件被直接反編譯,許多開發人員將一些關鍵的Class文件進行加密,例如對注冊碼、序列號管理相關的類等。在使用這些被加密的類之前,程序首先需要對這些類進行解密,而後再將這些類裝載到JVM當中。這些類的解密可以由硬體完成,也可以使用軟體完成。
在實現時,開發人員往往通過自定義ClassLoader類來完成加密類的裝載(注意由於安全性的原因,Applet不能夠支持自定義的ClassLoader)。自定義的ClassLoader首先找到加密的類,而後進行解密,最後將解密後的類裝載到JVM當中。在這種保護方式中,自定義的ClassLoader是非常關鍵的類。由於它本身不是被加密的,因此它可能成為黑客最先攻擊的目標。如果相關的解密密鑰和演算法被攻克,那麼被加密的類也很容易被解密。
3.轉換成本地代碼
將程序轉換成本地代碼也是一種防止反編譯的有效方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,也可以選擇關鍵模塊轉換。如果僅僅轉換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。當然,在使用這種技術保護Java程序的同時,也犧牲了Java的跨平台特性。對於不同的平台,我們需要維護不同版本的本地代碼,這將加重軟體支持和維護的工作。不過對於一些關鍵的模塊,有時這種方案往往是必要的。為了保證這些本地代碼不被修改和替代,通常需要對這些代碼進行數字簽名。在使用這些本地代碼之前,往往需要對這些本地代碼進行認證,確保這些代碼沒有被黑客更改。如果簽名檢查通過,則調用相關JNI方法。
4.代碼混淆
代碼混淆是對Class文件進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能(語義)。但是混淆後的代碼很難被反編譯,即反編譯後得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。從理論上來說,黑客如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研製反混淆的工具。但是從實際情況來看,由於混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止反編譯。下面我們會詳細介紹混淆技術,因為混淆是一種保護Java程序的重要技術。

❹ java中private和protected的區別

1、private修飾詞,表示成員是私有的,只有自身可以訪問;
2、protected,表示受保護許可權,體現在繼承,即子類可以訪問父類受保護成員,同時相同包內的其他類也可以訪問protected成員。
3、無修飾詞(默認),表示包訪問許可權(friendly, java語言中是沒有friendly這個修飾符的,這樣稱呼應該是來源於c++ ),同一個包內可以訪問,訪問許可權是包級訪問許可權;
4、public修飾詞,表示成員是公開的,所有其他類都可以訪問;

❺ 【轉】如何保護Java代碼

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

❻ java中API中的保護類型方法怎麼用

保護類型Protected 對當前包中的所有類是可見的,在子類中也是可見的。
在javaAPI中,我們不會將自己寫的類文件放到要使用的方法的類文件的同一個包中,這種情況下,最好使用繼承來達到你的目的。

❼ JAVA中protected的作用

protected的作用:

主要的作用就是用來保護子類的。它的含義在於子類可以用它修飾的成員,其他的不可以,它相當於傳遞給子類的一種繼承的東西。

public的作用:

具有最大的訪問許可權,可以訪問任何一個在classpath下的類、介面、異常等。它往往用於對外的情況,也就是對象或類對外的一種介面的形式。

default的作用:

有時候也稱為friendly,它是針對本包訪問而設計的,任何處於本包下的類、介面、異常等,都可以相互訪問,即使是父類沒有用protected修飾的成員也可以。

private的作用:

訪問許可權僅限於類的內部,是一種封裝的體現,例如,大多數成員變數都是修飾符為private的,它們不希望被其他任何外部的類訪問。

注意:java的訪問控制是停留在編譯層的,也就是它不會在.class文件中留下任何的痕跡,只在編譯的時候進行訪問控制的檢查。其實,通過反射的手段,是可以訪問任何包下任何類中的成員,例如,訪問類的私有成員也是可能的。

區別:

public:可以被所有其他類所訪問

private:只能被自己訪問和修改

protected:自身、子類及同一個包中類可以訪問

default:同一包中的類可以訪問,聲明時沒有加修飾符,認為是friendly。

Java簡介

Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。

Java由四方面組成:

1、Java編程語言,即語法。

2、Java文件格式,即各種文件夾、文件的後綴。

3、Java虛擬機(JVM),即處理*.class文件的解釋器。

4、Java應用程序介面(Java API)。

Java分為三個體系

1、Java SE(J2SE,Java2 Platform Standard Edition,標准版)。

2、JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企業版)。

3、Java ME(J2ME,Java 2 Platform Micro Edition,微型版)。

❽ JAVA中protected的作用是什麼

JAVA中protected是成員訪問修飾關鍵字,表示所修飾的成員可以被本類和派生類中可以訪問。

熱點內容
有壓縮錢嗎 發布:2025-02-08 16:34:01 瀏覽:516
折紙手工解壓小方塊 發布:2025-02-08 16:32:45 瀏覽:252
php與運算符 發布:2025-02-08 16:32:45 瀏覽:762
如何用伺服器搭建懸賞平台 發布:2025-02-08 16:29:53 瀏覽:278
ftp伺服器破解版 發布:2025-02-08 16:28:41 瀏覽:522
mysql配置訪問ip 發布:2025-02-08 16:22:49 瀏覽:116
體表面積簡易演算法 發布:2025-02-08 16:18:04 瀏覽:687
存儲器的分級儲存是如何實現的 發布:2025-02-08 16:11:27 瀏覽:193
電腦怎麼看路由器密碼 發布:2025-02-08 16:10:13 瀏覽:401
匯編宏編譯 發布:2025-02-08 16:08:30 瀏覽:194