當(dāng)下軟件園 / 匯聚當(dāng)下最新最酷的軟件下載站!
當(dāng)下軟件園

您的位置: 首頁 > 應(yīng)用軟件 > 編程工具 > JD-GUI(java反編譯軟件) V0.3.6 英文綠色版
JD-GUI JD-GUI(java反編譯軟件) V0.3.6 英文綠色版 版本

  JD-GUI 是一個(gè)非常好用的java反編譯軟件,它實(shí)現(xiàn)了eclipse的高亮著色功能和多文件標(biāo)簽瀏覽功能,它可以支持對(duì)整個(gè)Jar文件進(jìn)行反編譯,并本源代碼可直接點(diǎn)擊進(jìn)行相關(guān)代碼的跳轉(zhuǎn)。JD-GUI 是一個(gè)獨(dú)立的顯示“.class” 文件Java源代碼的圖形用戶界面工具。您可以使用JD-GUI瀏覽和重建源代碼的即時(shí)訪問方法和字段,以代碼高度方式來顯示反編譯過來的代碼。

JD-GUI

【什么是反編譯器】

  大家都知道,將源代碼轉(zhuǎn)換成二進(jìn)制執(zhí)行代碼的過程叫"編譯",比如將C源代碼編譯成exe可執(zhí)行文件;那么把二進(jìn)制執(zhí)行代碼的過程就叫"反編譯",比如把exe轉(zhuǎn)換為C源代碼就叫"反編譯"。

  由于主流的C的編譯器都進(jìn)行了代碼的優(yōu)化,因此把C編譯生成的exe文件反編譯成C代碼非常困難。但是像Java、.net這樣基于虛擬機(jī)技術(shù)的編程語言則反編譯非常容易,Java平臺(tái)下有Jad、Jode、JD等反編譯器,.net平臺(tái)下則有Reflector等反編譯器,反編譯質(zhì)量非常高,甚至和源代碼幾乎沒什么差別。

  折疊反編譯得到的是源代碼嗎?

  反編譯得到的代碼是非常接近于源代碼,但是或多或少與源代碼有一些差異的,比如一些表達(dá)式被優(yōu)化掉了,比如:

  下面的源代碼:

  int i=1+1;

  學(xué)過《編譯原理》的同學(xué)知道有"常量?jī)?yōu)化"這個(gè)編譯優(yōu)化算法,因此上邊的源代碼一般會(huì)被優(yōu)化為:int i=2;

  由于在編譯過程中已經(jīng)進(jìn)行了優(yōu)化,把"1+1"這個(gè)原始的信息丟掉了,因此反編譯出來的代碼只能是:

  int i=2;

  可以看到反編譯得到的代碼和源代碼是有區(qū)別的。

  比如:andriod中

  download = (Button)findViewById(R.id.xiaz);

  被優(yōu)化成了download = (Button)findViewById(0x7f070018);

  折疊程序可以反編譯豈不是很不安全?

  可以采用代碼混淆等技術(shù)來加大反編譯的難度和降低反編譯代碼的可讀性,但是完全避免反編譯是不可能的。

  折疊反編譯器的原理是什么?

  由于Java、.net這樣的基于虛擬機(jī)技術(shù)的語言都是采用了ByteCode的二進(jìn)制結(jié)構(gòu),因此很容易將ByteCode轉(zhuǎn)化為"抽象語法樹"(簡(jiǎn)稱AST,《編譯原理》這門課中的概念),然后采用反編譯器就可以將AST轉(zhuǎn)換為代碼了。

軟件特別說明

標(biāo)簽: java 反編譯

其他版本下載

更多(5)>Java反編譯工具

反編譯是一個(gè)對(duì)目標(biāo)可執(zhí)行程序進(jìn)行逆向分析,從而得到源代碼的過程。尤其是像Java這樣的運(yùn)行在虛擬機(jī)上的編程語言,更容易進(jìn)行反編譯得到源代碼。Java平臺(tái)下有Jad、Jode、JD等反編譯器,除了這些,下面還推薦其他好用的Java反編譯工具,有需要的程序員不要錯(cuò)過。 查看 >>
網(wǎng)友評(píng)論
回頂部 去下載

關(guān)于本站|下載幫助|下載聲明|軟件發(fā)布|聯(lián)系我們

Copyright ? 2005-2024 daaijiaoyu.cn.All rights reserved.

浙ICP備2024132706號(hào)-1 浙公網(wǎng)安備33038102330474號(hào)