Java代碼混淆和加密–Jocky

來源:互聯網
上載者:User

 

1.1 什麼是Jocky?

   我們知道,Java是一種跨平台的程式設計語言,其源碼(.java檔案)被編譯成與平台無關的位元組碼(.class檔案),然後在運行期動態連結。 這樣,編譯後的類檔案中將包含有符號表,從而使得Java程式很容易被反編譯。相信每一個Java開發人員,都曾經用過諸如Jad之類的反編譯器,對Java的class 檔案進行反編譯,從而觀察程式的結構與實現細節。如此一來,對於那些需要嚴格進行智慧財產權保護的Java應用,如何有效保護客戶的商業投資, 是開發人員經常需要面對的問題。     於是就出現了Java混淆編譯器,它的作用是打亂class檔案中的符號資訊,從而使反向工程變得非常困難。     Jocky就是這樣一款優秀的Java混淆編譯器。

1.2 為什麼需要Jocky?

   目前業界有不少商業的甚或是開源的混淆編譯器,但它們普遍存在一些這樣或者那樣的問題。一般而言,現有的混淆器都是對編譯好的 class檔案進行混淆,這樣就需要編譯和混淆兩個步驟。而事實上,並不是所有的符號都需要混淆。如果你開發的是一個類庫,或者某些類需要動態裝載, 那些公用API(或者說:那些被publish出來的API)就必須保留符號不變,只有這樣,別人才能使用你的類庫。現有的混淆器提供了GUI或指令碼的方式來對那些 需要保留的符號名稱進行配置,但如果程式較大時,配置工作將變得很複雜,而程式一旦修改,配置工作又要重新進行。某些混淆器能夠調整位元組碼的順序, 使反編譯更加困難,但筆者經曆過混淆之後的程式運行出錯的情況。     而Jocky與其它混淆編譯器最大的不同之處在於:它是直接從源碼上做文章,也就是說編譯過程本身就是一個混淆過程。

1.3 Jocky是如何工作的?

   Jocky混淆編譯器是在Sun JDK中提供的Java編譯器(javac)的基礎上完成的,修改了其中的代碼產生過程,對編譯器產生的中間代碼進行混淆, 最後再產生class檔案,這樣編譯和混淆只需要一個步驟就可以完成。另外可以在來源程式中插入符號保留指令來控制哪些符號需要保留,將混淆過程與開發過程 融合在一起,不需要單獨的配置。

以上為摘抄

Jocky的下載和配置

OperaMasks上的下載連結已經失效,請移步CSDN自行搜尋下載

1、下載完成後解壓得到名為org.apusic.jocky_1.0.3的檔案夾,把這個檔案夾放到eclipse根目錄的plugins檔案夾下(myeclipse和eclipse同理)。

2、重啟eclipse,右鍵一個工程檔案,出現Jocky選項說明OK。

 

3、一般是先進行設定-Jocky Settings,然後進行Jocky Now!。以下是settings介面

Enable Jocky多選框選中

Jocky build file是在項目建立一個xml檔案,根據裡面的配置進行混淆

Scramble level是進行混淆的代碼等級,有none、private、package、protected、public、all,將根據設定對java檔案中的相應修飾符修飾的方法代碼進行混淆

Target VM是java虛擬機器的版本,有1.4和1.5,一般選擇1.5

Output directory是輸出檔案夾,在項目根目錄下

點擊確認會自動根據項目的設定產生xml檔案

4、jocky_build.xml,實際上是一個ant build檔案,由系統自動產生,有幾處需要說明

  1. <pathelement location="bin"/>   <pathelement location="XXX.jar"/>這類標籤代表項目編譯所需的jar包,由於是自動產生一般不用理睬,如果出現找不到相關的package之類的報錯,那麼有可能是location路徑有問題。如果你安裝系統時是使用者名稱設定成了中文名,並且使用了maven,maven的jar包的下載路徑設定成了預設${user}/.m2/repository/,那麼jocky這裡的路徑會出現問題,中文名的使用者名稱會亂碼或者消失,請修改maven配置xml檔案修改下載路徑<localRepository>[自己指定的路徑]</localRepository>
  2. <javac destdir="${jocky.output.dir}/bin" target="${target}" encoding="UTF-8" > 代碼中如果有中文名,必須手動設定編碼,預設是沒有的。
  3. <src path="src"/> 設定源檔案的目錄,因為有時候我們只想輸出src目錄下的部分包而不是全部。

5、最後Jocky Now!產生的.class檔案要通過命令進行打包,下篇文章簡單介紹。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.