當前位置:編程學習大全網 - 源碼下載 - [轉]如何保護Java代碼

[轉]如何保護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 obfuscator的特點:通過壹種或多種處理方法對類文件和java源代碼進行混淆,生成壹個新的類,使得混淆後的代碼不易反編譯,反編譯後的代碼難以閱讀和理解。這種混淆器有很多工具,也很有效。缺點:雖然混亂的代碼反編譯後不容易讀懂,但是妳代碼中隱藏的敏感內容還是可以被有經驗的人或者花更多的時間發現或者計算出來。而且在很多應用中,並不是所有的代碼都能混淆,往往壹些關鍵庫,類名,方法名,變量名等。不能因使用要求的限制而混淆。3.將java程序與服務器隔離的特點:將java程序放在服務器上,用戶無法訪問類文件和相關支持文件,客戶端只通過接口訪問。這種方法可以在客戶端/服務模式的應用中更好地保護java代碼。缺點是:必須是客戶/服務模式,限制了這種模式的應用範圍;因為邏輯的暴露總是壹個薄弱環節,所以客戶端在訪問接口時壹般都需要安全認證。4.Java加密保護的特點:自定義類加載器對類文件和相關文件進行加密,在運行時對相關文件進行解密並加載類。為了起到保護作用,自定義的本地代碼執行器還必須保護自定義的類加載器、加密和解密的相關類和支持文件。這種方式可以有效保護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,該工具可能不支持它。怡東噴氣機就屬於這種工具。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的開發環境是什麽?
  • copyright 2024編程學習大全網