當前位置:成語大全網 - 書法字典 - java的源代碼隱藏

java的源代碼隱藏

妳要的函數其實是Java代碼混亂。想知道如何把Java編譯成exe,可以看“參考資料”。

下面這段話摘自《Java手機/PDA編程入門》壹書,可以作為混淆器性能的概觀:

我沒有用過DashO,所以無法對它進行個人評價。所以我現在只說明我用過的產品。從作者個人角度來說,ZKM是最好的,JAX居中,RetroGuard和ProGuard最差,壹分錢壹分貨是永恒的真理。如果說ZKM和JAX在功能性方面都不錯的話,然而JAX是IBM開發的產品,所以它也繼承了大部分IBM產品的最大特點,就是“超級功能,但是不好用”。僅僅閱讀JAX的配置文件可能是壹個大問題。

下面介紹幾種有代表性的混淆器,並對它們的產品性能進行比較。我們使用不同的混淆器對同壹個java代碼進行混淆,分別列出混淆後代碼反編譯的結果,並給出壹些直接的使用體驗。

原始java代碼:

公共類SimpleBean實現Serializable {

private String[] name = {"name0 "," name1 "," name2 "," name 3 " };

個人分發名單myList = null

public void SimpleBean() {

my list = new ArrayList(4);

}

public void init_public() {

my list . add(" name ");

for(int I = 1;我& lt4;i++){

init _ private(I);

}

}

private void init_private(int j) {

my list . add(name[j]);

}

私有void writeObject(Java . io . object output stream out)

引發IOException {

}

}

壹. ProGuard 4.5.1

ProGuard是壹個免費的Java類文件壓縮器、優化器和混淆器。它可以找到並刪除無用類、字段、方法和屬性。它還可以優化字節碼,刪除無用的指令。最後,它用簡單無意義的名字給妳的類名、字段名、方法名重新命名。經過以上操作,jar文件會變小,很難逆向工程。Eclipse集成了Proguard。它支持腳本控制,GUI界面,未加密字符串和J2ME。

具有類似功能的開源混淆器:

逆向守衛伊瓜德(逆向守衛的升級版)JODE

Jad反編譯從混淆類獲得的代碼:

公共類SimpleBean

實現可序列化

{

公共SimpleBean()

{

a _ java _ util _ List _ fld = null

}

public void SimpleBean()

{

a _ Java _ util _ List _ fld = new ArrayList(4);

}

public void init_public()

{

a _ Java _ util _ List _ fld . add(" name ");

for(int I = 1;我& lt4;i++)

{

int j = I;

SimpleBean simplebean = this

a _ Java _ util _ List _ fld . add(simple bean . a _ Java _ lang _ String _ array 1d _ fld[j]);

}

}

私有字符串a _ Java _ lang _ String _ array 1d _ fld[]= {

"名稱0 ","名稱1 ","名稱2 ","名稱3 "

};

私有列表a _ java _ util _ List _ fld

}

優勢:

1,內部私有方法調用內聯,但基本達不到混淆效果;

2.文檔使用詳細,有很多混淆選項配置文件的例子;

3.混淆選項的粒度很細,GUI界面可以用來支持本地方法的保護。

4.支持j2me,可以集成到Eclipse中;;

5.開源。

缺點:

1,符號混淆名稱有提示性,字符串不加密,沒有其他混淆措施;

2.混淆主要針對Xlet、Midlet等應用,庫文件混淆時配置文件會很復雜。

第二,詼諧

JOCky是金蝶中間件(原名Joc)技術負責人袁紅崗先生的個人作品。本來是方便開發Apusic應用服務器,現在開放給大家免費使用。Jocky混淆編譯器是在Sun JDK提供的Java編譯器(javac)的基礎上完成的。修改代碼生成過程,對編譯器生成的中間代碼進行混淆,最後生成類文件,這樣編譯和混淆只需壹步完成。換句話說,它直接從源代碼上做文章,這是Jocky與其他令人困惑的編譯器的最大區別。此外,可以在源程序中插入符號保留指令來控制需要保留哪些符號,混淆過程可以與開發過程集成,而不需要單獨的混淆選項配置文件。Jocky的上述特點更適合java類庫的混亂。

Jad反編譯從混淆類獲得的代碼:

公共類SimpleBean

實現可序列化

{

公共SimpleBean()

{

這個;

String as[]= new String[4];

as;

as[0]= " name 0 ";

as;

JVM INSTR交換;

1;

”name 1”;

JVM INSTR aastore

JVM指令dup

JVM INSTR交換;

2;

”名稱2”;

JVM INSTR aastore

JVM指令dup

JVM INSTR交換;

3;

”名稱3”;

JVM INSTR aastore

_$2;

_ $ 1 = null;

返回;

}

public void SimpleBean()

{

這個;

JVM INSTR new # 9 & lt類數組列表& gt;

JVM指令dup

JVM INSTR交換;

4;

ArrayList();

_$1;

}

public void init_public()

{

_ $ 1 . add(" name ");

for(int I = 1;我& lt4;i++)

_ $ 1㈠;

}

私有void _$1(int i)

{

_ $ 1 . add(_ $ 2[I]);

}

私有void writeObject(object output stream object output stream)

拋出IOException

{

}

私有字符串_ $ 2[];

私信列表_ $ 1;

}

優勢:

1,除了符號混淆,還增加了數據混淆(字符數組初始化);

2.有些語句只能通過反編譯得到字節碼指令;

3.在孫JDK提供的Java編譯器(javac)基礎上完成,編譯和混淆壹次完成,不需要生成壹個類文件再混淆;

4.提供了壹個Eclipse的插件,可以在Eclipse中直接使用Jocky。

缺點:

1,混淆選項粒度較粗,可能需要在具體代碼中添加@preserve指令才能實現,工作量較大;

2.沒有控制流混淆。

三。阿拉托裏3.1 _演示

阿拉托裏屬於第二代混淆器,有能力全方位保護妳的知識產權。Allatori有以下保護方法:命名混淆、流混淆、調試信息混淆、字符串編碼和水印技術。這個混淆器是免費的教育和非商業項目。版本2.1支持war和ear文件格式,並允許向需要混亂代碼的應用程序添加生效日期。

Jad反編譯從混淆類獲得的代碼:

公共類SimpleBean

實現可序列化

{

public void init_public()

{

d . add(c . k(" { u { 0 "));

int I = 1;

goto _L1

_L3:

h(壹);

++ I;

_L1:

4;

JVM INSTR icmplt 21;

去L2 L3

_L2:

}

public void SimpleBean()

{

d =新數組列表(4);

}

私有void H(int a)

{

d . add(c[a]);

}

公共SimpleBean()

{

d =空;

}

私有void H(object output stream object output stream)

拋出IOException

{

}

私有字符串c[] = {

c.k("\177q\177te "),c.k("\177q\177td "),c.k("\177q\177tg "),c.k("\177q\177tf ")

};

私人名單d;

}

註意:c.k是C類的壹個靜態方法,是為字符串加密額外生成的。

優勢:

1,設計考慮了庫文件混淆的使用場景;

2.文檔使用詳細,有很多混淆選項配置文件的例子;

3.除了符號混淆,還使用了兩種高級混淆方法:控制混淆(為循環重寫)和字符串加密(字符串數組初始化);

4.混淆選項的粒度很細,支持局部方法的保護。

5.支持水印技術,允許在需要混淆的代碼中添加生效日期;

6.支持j2me;

缺點:

1,商業軟件(價格附後),教育和非商業用途免費(網址鏈接為/price.html)。

附:價格情況

單壹開發者許可證

1許可證290美元

2-5個許可證260美元

6-10許可證230美元

11+許可證200美元

網站許可證3750美元

營業執照4850美元

年度支持更新45美元

第四,澤利克斯·克拉斯馬斯特(ZKM)

Zelix KlassMaster是來自Zelix Pty Ltd的商業混淆器,在官方文檔中很少介紹它的混淆功能。其保護功能非常強大,可以進行符號混淆和控制混淆,支持字符串、堆棧混淆、異常重構、增量混淆和J2ME的復雜加密保護。Zelix KlassMaster提供了壹個試用版,可以從。

動詞 (verb的縮寫)DashO Pro

DashO Pro是由Preemptive Solutions開發的商業混淆器。可以下載免費的評估版。DashO Pro代碼保護強大易用,方便靈活(商業軟件,非開源)。這個Java混淆器是Sun的選擇。對於企業應用程序,作為其Java開發包的壹部分,Sun Microsystems使用DashO Pro來混淆其加密庫。Dashoporo可以重命名ID,使其成為無意義的字符;混亂的元數據;改變控制流等。,所有這些操作都讓java代碼混亂難懂。產品特性包括:

領先的Java源代碼保護機制;

使用獲得專利的重載誘導技術重命名包/類/方法/域;

先進的過程控制混淆機制;

字符串加密技術;

阻止反編譯器生成有用的輸出;

水印軟件;

提高Java源代碼的效率;

不帶類/方法/域完全刪除常量存儲庫;

在類/方法級別優化以提高JIT效果;

動態加載檢測到的類;

全面高效的Java源代碼擴展和部署;

支持包括1.5在內的所有JDK版本(JSE、J2EE、J2ME等);

自動堆棧跟蹤轉換;

指定路徑中的包或javajars

支持任何打包的Java內容——程序、庫、小應用程序、小服務器程序、EJB等。支持J2ME CLDC架構,包括MIDP和iAppli;

CLDC預檢圖書館支持類;

可以從指定的路徑、Zip壓縮包或jars中提取;

支持導出100%純Java,並提供驗證;

命令行界面適合集成到構建環境中;

基於XML的配置文件,簡單易用;

全面準確的PDF格式用戶指南。