如何反編譯項目外的class
A. 混淆的class文件怎麼進行反編譯
一般情況下java應用的開發者為了保護代碼不被別人抄襲,在生成class文件的時候都java文件進行了混淆,這種class文件用反編譯工具得到的結果很難看懂,並且不能進行編譯。
從研究的角度,淺析如何讀懂這種反編譯過來的文件。
例子一:賦值
反編譯過來的代碼如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始語句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
註解:
JVM INSTR swap ; //賦值語句
練習:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;
例子二:不帶參數創建對象
反編譯過來的代碼如下:
JVM INSTR new #244 ;
JVM INSTR p ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始語句:
CrossTable crosstable = new CrossTable();
註解:
練習:
JVM INSTR new #246 ;
JVM INSTR p ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:帶參數創建對象
反編譯過來的代碼如下:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;
原始語句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
註解:
此語句實際上是:s2 += s.substring(j, i) + s6;
練習:
例子四:for循環
反編譯過來的代碼如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始語句:
for(int k=0;k < as.length;k++)
{
...
}
註解:
例子五:while循環
反編譯過來的代碼如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始語句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}
B. 怎麼將java類反編譯成class文件
打開下載好的DJ_java_discompiler選擇file,之後點擊open。之後出現以下界面。這里我選擇一個test.class文件。點擊打開之後,出現以下反編譯test.java後的界面。這個是test.java的文件。可以看出反編譯後的結果是正確的。如果以後想看.class文件的源碼,可以用這種方式查看。
C. 怎麼反編譯java的class文件
工具:
DJ java discompiler.
方法:
打開DJ_java_discompiler,點左上角的file,選擇open。
D. 如何將java中的.class文件反編譯
安裝Java jdk後 看安裝目錄里有沒有jad.exe,沒有悄畢要下載,一般都有的 配置Java環境變數 開始-運行-cmd-回車-進入命令行窗口: cd+空格+class文件所在路徑: 按下面啟乎芹的命令進行頃橡反編譯: 例如:[2] jad -sjava example.class 回車 在目錄里可以看到
E. java反編譯器怎麼用
目前最好的反編譯工具,是小穎JAVA源代碼反編譯超級引摯,Google一下就有下的,很好用
F. 如何在MyEclipse中反編譯class文件
1.下載MyEclipse反編譯Class文件的工具
2.工具的安裝
下載後上面的工具之後,解壓出來,我們可以看到有兩個文件:jad.exe、net.sf.jadclipse_3.3.0.jar 。
第一步:我們將jad.exe文件放到JDK的bin目錄下,具體的可以查看下面的圖片:
第二步:將 net.sf.jadclipse_3.3.0.jar 拷貝到 MyEclipse安裝目錄下的plugins目錄下面(接下來的步驟我會以我的計算機路徑為例子說明)路徑在:D:\Users\Administrator\AppData\Local\Genuitec\Common\plugins.具體文件位置見下圖:
第三步:在D:\Users\Administrator\AppData\Local\Genuitec\MyEclipse-8.6\dropins創建一個eclipse文件夾.
第四步:在創建好的eclipse文件夾下,分別創建featues、plugins兩個文件夾.
第六步:將net.sf.jadclipse_3.3.0.jar 文件分別拷貝到創建好的featues、plugins兩個文件夾裡面.
第七步:重新啟動MyEclipse,在Windows——>Perference——>Java下面應該會多出一個JadClipse目錄. 如果沒有出現的話,多試幾次就OK了,我當時也是這樣.
第八步:點擊JadClipse,在右邊的窗口中配置JadClipse. 設置path to decompiler為jad.exe的全路徑,如:C:\jdk\bin\jad.exe,在Directory for temporary files中指定l臨時文件路徑,如 :D:\Users\Administrator\AppData\Local\Genuitec\MyEclipse-8.6\result ,其中result是新建一個文件夾. 同時需要選中 User Eclipse code formatter ,這樣編譯出來的Java 代碼會和Class文件的格式一樣.
為了避免編譯後的中文亂碼問題,我們需要配置Misc,選中如下單選框.
第九步:安裝完成之後,雙擊Class文件,MyEclipse就自動反編譯了.如果沒有出現想要的結果,需要檢查一下「*.class」默認關聯的編輯器為「JadClipse Class File Viewer「 ,具體的操作還是看圖吧:
關聯之後,就可以自動的反編譯啦!
G. 反編譯jar里所有class文件,用什麼工具
用「jd-gui.exe」。
第一步:下載附件的工具「jd-gui.zip";
第二步:解壓後運行「jd-gui.exe」;
第三步:選擇文件,之後找到「jar」文件、「class」文件,打開即可。
H. 怎樣反編譯class文件,再編譯
一、反編譯:下載一個jad 反編譯工具jad簡單用法 以下假設jad.exe在c:/java目錄下 一、基本用法 Usage: jad [option(s)] 直接輸入類文件名,且支持通配符,如下所示。 c:/java/>jad example1.class c:/java/>jad *.class 結果是將example1