java混淆jocky,Java代碼混淆和加密--Jocky

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。

3f7fc35a6a30cc41ab4111672d9c5519.png

3、一般是先進行設置-Jocky Settings,然后進行Jocky Now!。以下是settings界面

4467be3cb777ebed9adf539eeb3029c9.png

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文件,由系統自動生成,有幾處需要說明

   這類標簽代表項目編譯所需的jar包,由於是自動生成一般不用理睬,如果出現找不到相關的package之類的報錯,那么有可能是location路徑有問題。如果你安裝系統時是用戶名設置成了中文名,並且使用了maven,maven的jar包的下載路徑設置成了默認${user}/.m2/repository/,那么jocky這里的路徑會出現問題,中文名的用戶名會亂碼或者消失,請修改maven配置xml文件修改下載路徑[自己指定的路徑] 。

代碼中如果有中文名,必須手動設定編碼,默認是沒有的。

 設定源文件的目錄,因為有時候我們只想輸出src目錄下的部分包而不是全部。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值