<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    javarun

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      0 Posts :: 1 Stories :: 1 Comments :: 0 Trackbacks

    在java代碼中往往包含著一 些非常敏感的信息,有些關系到開發者的利益,有些可能因為使用環境不同而關系到軟件用戶的利益,于是,java程序是赤膊上陣還是全副武裝這個現實問題就 擺在了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混淆器

      特點:使用一種或多種處理方式將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 代碼保護方面可以采取各種可能的方式,不可拘泥于那些條條框框。

    posted on 2010-07-09 14:00 javarun 閱讀(1781) 評論(1)  編輯  收藏

    Feedback

    # re: 從常見的幾種方式看保護java代碼 2010-07-10 16:24 特立獨行
    多謝lz的分享 學習了 第一次接觸這方面的只是  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲欧美成aⅴ人在线观看| 亚洲1区1区3区4区产品乱码芒果| 亚洲国产成人手机在线观看 | 青青久久精品国产免费看| 免费高清在线影片一区| 亚洲一区二区三区亚瑟| 免费观看的毛片大全| 亚洲精品免费网站| 欧美日韩国产免费一区二区三区| 亚洲综合久久成人69| 99久久人妻精品免费二区| 亚洲国产日韩在线人成下载| 久久九九兔免费精品6| 亚洲www77777| 精品国产麻豆免费网站| 免费看一级高潮毛片| 国产AV无码专区亚洲精品| 精品无码无人网站免费视频 | 黄色a三级三级三级免费看| 亚洲AV中文无码乱人伦| 成全在线观看免费观看大全 | 一本天堂ⅴ无码亚洲道久久| 日韩在线看片免费人成视频播放 | 久久久精品视频免费观看| 亚洲AV无码久久精品蜜桃| 免费v片在线观看视频网站| 亚洲av乱码一区二区三区香蕉| 日本高清色本免费现在观看| 一级黄色免费网站| 亚洲视频一区在线播放| 色www永久免费视频| XXX2高清在线观看免费视频| 亚洲成人福利在线观看| 免费不卡中文字幕在线| 久久免费观看国产99精品| 亚洲中文字幕无码爆乳| 亚洲日韩欧洲乱码AV夜夜摸| 9久9久女女免费精品视频在线观看| 国产午夜亚洲精品不卡电影| 日本亚洲欧洲免费天堂午夜看片女人员| 青青视频观看免费99|