有效的防止JAVA程式源碼被人偷窺

來源:互聯網
上載者:User

仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">SEO診斷淘寶客 站長團購 雲主機 技術大廳

安全:有效的防止JAVA程式源碼被人偷窺

JAVA程式的原始程式碼很容易被別人偷看,只要有一個反編譯器,任何人都可以分析別人的代碼。 本文討論如何在不修改原有程式的情況下,通過加密技術保護原始程式碼。

一、為什麼要加密?

更多內容竟在小可代碼基地www.xk15.cn

對於傳統的C++或C++之類的語言來說,要在Web上保護原始程式碼是很容易的,只要不發佈它就可以。 遺憾的是,JAVA程式的原始程式碼很容易被別人偷看。 只要有一個反編譯器,任何人都可以分析別人的代碼。 JAVA的靈活性使得原始程式碼很容易被竊取,但與此同時,它也使通過加密保護代碼變得相對容易,我們唯一需要瞭解的就是JAVA的ClassLoader物件。 當然,在加密過程中,有關JAVA Cryptography Extension(JCE)的知識也是必不可少的。

有幾種技術可以「模糊」JAVA類檔,使得反編譯器處理類檔的效果大打折扣。 然而,修改反編譯器使之能夠處理這些經過模糊處理的類檔並不是什麼難事,所以不能簡單地依賴模糊技術來保證原始程式碼的安全。

我們可以用流行的加密工具加密應用,比如PGP(Pretty Good Privacy)或GPG(GNU Privacy Guard)。 這時,最終使用者在運行應用之前必須先進行解密。 但解密之後,最終使用者就有了一份不加密的類檔,這和事先不進行加密沒有什麼差別。

JAVA運行時裝入位元組碼的機制隱含地意味著可以對位元組碼進行修改。 JVM每次裝入類檔時都需要一個稱為ClassLoader的物件,這個物件負責把新的類裝入正在運行的JVM。 JVM給ClassLoader一個包含了待裝入類(比如java.lang.Object)名字的字串,然後由ClassLoader負責找到類檔,裝入原始資料,並把它轉換成一個Class物件。

我們可以通過定制ClassLoader,在類檔執行之前修改它。 這種技術的應用非常廣泛?? 在這裡,它的用途是在類檔裝入之時進行解密,因此可以看成是一種即時解密器。 由於解密後的位元組碼檔永遠不會保存到檔案系統,所以竊密者很難得到解密後的代碼。

由於把原始位元組碼轉換成Class物件的過程完全由系統負責,所以創建定制ClassLoader物件其實並不困難,只需先獲得原始資料,接著就可以進行包含解密在內的任何轉換。

JAVA 2在一定程度上簡化了定制ClassLoader的構建。 在JAVA 2中,loadClass的缺省實現仍舊負責處理所有必需的步驟,但為了顧及各種定制的類裝入過程,它還調用一個新的findClass方法。

這為我們編寫定制的ClassLoader提供了一條捷徑,減少了麻煩:只需覆蓋findClass,而不是覆蓋loadClass。 這種方法避免了重複所有裝入器必需執行的公共步驟,因為這一切由loadClass負責。

不過,本文的定制ClassLoader並不使用這種方法。 原因很簡單。 如果由預設的ClassLoader先尋找經過加密的類檔,它可以找到;但由於類檔已經加密,所以它不會認可這個類檔,裝入過程將失敗。 因此,我們必須自己實現loadClass,稍微增加了一些工作量。

二、定制類裝入器

更多內容竟在小可代碼基地www.xk15.cn

每一個運行著的JVM已經擁有一個ClassLoader。 這個預設的ClassLoader根據CLASSPATH環境變數的值,在本地檔案系統中尋找合適的位元組碼檔。

應用定制ClassLoader要求對這個過程有較為深入的認識。 我們首先必須創建一個定制ClassLoader類的實例,然後顯式地要求它裝入另外一個類。 這就強制JVM把該類以及所有它所需要的類關聯到定制的ClassLoader。 Listing 1顯示了如何用定制ClassLoader裝入類檔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.