網友評分: 9.7分
JD-GUI 是一個非常好用的java反編譯軟件,它實現(xiàn)了eclipse的高亮著色功能和多文件標簽瀏覽功能,它可以支持對整個Jar文件進行反編譯,并本源代碼可直接點擊進行相關代碼的跳轉。JD-GUI 是一個獨立的顯示“.class” 文件Java源代碼的圖形用戶界面工具。您可以使用JD-GUI瀏覽和重建源代碼的即時訪問方法和字段,以代碼高度方式來顯示反編譯過來的代碼。
大家都知道,將源代碼轉換成二進制執(zhí)行代碼的過程叫"編譯",比如將C源代碼編譯成exe可執(zhí)行文件;那么把二進制執(zhí)行代碼的過程就叫"反編譯",比如把exe轉換為C源代碼就叫"反編譯"。
由于主流的C的編譯器都進行了代碼的優(yōu)化,因此把C編譯生成的exe文件反編譯成C代碼非常困難。但是像Java、.net這樣基于虛擬機技術的編程語言則反編譯非常容易,Java平臺下有Jad、Jode、JD等反編譯器,.net平臺下則有Reflector等反編譯器,反編譯質量非常高,甚至和源代碼幾乎沒什么差別。
折疊反編譯得到的是源代碼嗎?
反編譯得到的代碼是非常接近于源代碼,但是或多或少與源代碼有一些差異的,比如一些表達式被優(yōu)化掉了,比如:
下面的源代碼:
int i=1+1;
學過《編譯原理》的同學知道有"常量優(yōu)化"這個編譯優(yōu)化算法,因此上邊的源代碼一般會被優(yōu)化為:int i=2;
由于在編譯過程中已經進行了優(yōu)化,把"1+1"這個原始的信息丟掉了,因此反編譯出來的代碼只能是:
int i=2;
可以看到反編譯得到的代碼和源代碼是有區(qū)別的。
比如:andriod中
download = (Button)findViewById(R.id.xiaz);
被優(yōu)化成了download = (Button)findViewById(0x7f070018);
折疊程序可以反編譯豈不是很不安全?
可以采用代碼混淆等技術來加大反編譯的難度和降低反編譯代碼的可讀性,但是完全避免反編譯是不可能的。
折疊反編譯器的原理是什么?
由于Java、.net這樣的基于虛擬機技術的語言都是采用了ByteCode的二進制結構,因此很容易將ByteCode轉化為"抽象語法樹"(簡稱AST,《編譯原理》這門課中的概念),然后采用反編譯器就可以將AST轉換為代碼了。
JD-GUI(java反編譯軟件) V0.3.6 英文綠色版 691K | 英文 | 9.7
詳情XJad(Java反編譯工具) V2.2 綠色版 802K | 簡體中文 | 8.9
詳情JDecompiler(java反編譯工具) V1.0 官方版 532K | 簡體中文 | 10
詳情JD-GUI(Java反編譯工具) V1.4 綠色版 8.48M | 簡體中文 | 5
詳情JD-GUI(Java反編譯工具) V1.6.6 綠色版 9.14M | 簡體中文 | 0
詳情關于本站|下載幫助|下載聲明|軟件發(fā)布|聯(lián)系我們
Copyright ? 2005-2024 hanheng168.com.All rights reserved.
浙ICP備2024132706號-1 浙公網安備33038102330474號