導航:首頁 > 源碼編譯 > 如何對class文件進行反編譯

如何對class文件進行反編譯

發布時間:2023-05-16 10:29:39

❶ 混淆的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);
}

❷ 如何將java中的.class文件反編譯

安裝Java jdk後
看安裝目錄里有沒有jad.exe,沒有要下載,一般都有的
配置Java環境變數
開始-運行-cmd-回車-進入命令行窗口:
cd+空格+class文件所在路徑:
按下面的命令進行反編譯:
例如:[2] jad -sjava example.class 回車
在目錄里可以看到example.java源文件

[1] 反編譯一個class文件:jad example.class,會生成example.jad,用文本編輯器打開就是java源代碼
[2] 指定生成源代碼的後綴名:jad -sjava example.class,生成example.java
[3] 改變生成的源代碼的名稱,可以先使用-p將反編譯後的源代碼唯姿輸出到控制台窗口,然後使用重定向,輸出到文件:jad -p example.class > myexample.java
[4] 把源代碼文件輸出到指定的目錄:jad -dnewdir -sjava example.class,在newdir目錄下生成example.java
[5] 把packages目錄下的class文件全部反編譯:jad -sjava packages/*.class
[6] 把packages目錄以及子目錄下的文件全部反編譯:jad -sjava packages/**/*.class,不過你仍然會發現所有的源代碼文件被放到了同一個文件中,沒有按照class文件的包路徑建肆唯立起路徑
[7] 把packages目錄以及子目錄下的文件全部反裂山培編譯並建立和java包一致的文件夾路徑,可以使用-r命令:jad -r -sjava packages/**/*.class
[8] 當重復使用命令反編譯時,Jad會提示「whether you want to overwrite it or not」,使用-o可以強制覆蓋舊文件

[9] 還有其他的參數可以設置生成的源代碼的格式,可以輸入jad命令查看幫助,這里有個人做了簡單的翻譯:jad命令總結
[10] 當然,你會發現有些源文件頭部有些注釋信息,不用找了,jad沒有參數可以去掉它,用別的辦法吧。

❸ 怎麼把class文件反編譯成java文件

安裝Java jdk後
看安裝臘脊和目錄里有沒有jad.exe,沒有要下載,一野雹般都有的
配置Java環境變數
開始-運行-cmd-回車-進入命令行窗口:
cd+空格+class文件所在路徑:
按下面的命令進行反編譯:
例如:[2] jad -sjava example.class 回車
在目錄里可以看到example.java源輪盯文件

❹ 如何將java中的.class文件反編譯

選擇一款反編譯工具即可
1、JD-GUI
JD-GUI 是顯示java 源代碼 *.class文件的 圖形界面工具。可以在這里下載:JD-GUI-DownLoad
下載下來後,打開該工具,直接將jar包 拖拽到 顯示窗口即可查看源代碼。
2、JD-Eclipse
(1)下載 JD-Eclipse 插件。下載後,打開Eclipse,選擇:Help-->Install New Software...-->add --archive... 按步驟操作即可:
安裝後,重啟Eclipse,應該可以查看 *.class文件的代碼。
ADD and Archive...
3、JD-IntelliJ
JD-Intellij 是 IntelliJ IDEA 的插件,安裝了這個插件,可以方便查看 jar包源碼。下載JD-Intellij
以Android studio為例: 可以離線安裝也可以在線安裝。

❺ 怎麼把class文件反編譯成java文件

Java中使用eclipse提供的插件對class進行反編譯成java文件,如下步驟:

1、安裝jadclipse插件
使用jadclipse插件一定要注意Eclipse版本。jadclipse_3.2.4,它對應的是Eclipse3.2版,jadclipse_3.3.0可以用於Eclipse3.3M6以上版。大家千萬不要把jadclipse_3.3.0放到Eclipse3.2中,也不要把jadclipse_3.2.4放到Eclipse3.3中,將jadclipse插件(版本自己選擇)直接到Eclipse目錄中的plugins文件夾下,然後打開Eclipse,選擇"窗口"-"首選項"-"常規"-"編輯器"-"文件關聯",點擊文件關聯中的*.class,下面就會看到"JadClipse Class File Viewer",選中它,點擊預設值,點擊OK,將它設置為默認的類查看器。如圖:

❻ 怎樣使用javap來反編譯class文件

當然可以了。在java軟體包的bin文件夾下有一個javap程序,就是用來反編譯的。 用法如java一樣。就是先用javac變成位元組碼文件就是.class文件後,用javap 加上文件名就可以反編譯了。 舉個例子test.class,反編譯用javap test就行了。

❼ 如何將java中的.class文件反編譯

一、反編譯:下載一個jad
反編譯嘩卜工具jad簡單用法

以下假設jad.exe在c:/java目錄下

一、基本用法

Usage: jad [option(s)]

直接輸入類文件名,且支持通配符,如下所示。

c:/java/>jad example1.class

c:/java/>jad *.class

結果是將example1.class反編譯為example1.jad。將example1.jad改為example1.java即得源

文件。

二、Option -o

不提示,覆蓋源文件

三、Option -s

c:/java/>jad -sjava example1.class

反編譯結果以.java為擴展名。

四、Option -p

將反編譯結果輸出到屏幕

c:/java/>jad -p example1.class

將反編譯結果重定向到文件

c:/java/>jad -p example1.class>example1.java

五、Option -d

指定反編譯的輸出文件目錄

c:/java/>jad -o -dtest -sjava *.class

二:修改、再編譯
用Eclipse新建工程,再將反編譯出的Java文件按原樣導入工程,就可以修改代碼。修改並調試後胡者,點擊Eclipse菜單中的文件→導出→Java→可運行的JAR文件褲蘆薯,選擇配置工程和導出路徑,然後點完成即可導出。

❽ 如何將java中的.class文件反編譯

打開下載好的DJ_java_discompiler

選擇file,之後點擊open。之後出現以下界面。這里選擇一個test.class文件。

點擊打開之後,出現以下反編譯test.java後的界面。

這個是test.java的文件。可以看出反編譯後的結果是正確的。

如果以後想看.class文件的源碼,可以用這種方式查看。

❾ 如何將java中的.class文件反編譯

安裝Javajdk後看安裝目錄里有沒有jad.exe,沒有要下載,一般都有的配置Java環境變數開始-運行-cmd-回車-進入命令行窗口:cd+空格+class文件所在路徑:按下面的命令進行反編譯:例如:[2]jad-sjavaexample.class回車在目錄里可以看到

❿ 有沒有這樣的軟體: 用jd-gui可以反編譯class文件,但是不能修改。有可以反編譯並直接修改的么

jd-gui可以將看到的反編譯結果保存到一個zip壓縮包裡面,操作好握方法如下:

1、橡消首先創建一個class文件,打開記事本。

閱讀全文

與如何對class文件進行反編譯相關的資料

熱點內容
簡訊刪除助手文件夾 瀏覽:688
java辦公自動化 瀏覽:340
php中超鏈接 瀏覽:253
linux默認路由設置 瀏覽:36
linux如何掛載iso 瀏覽:432
vs程序換文件夾後不能編譯 瀏覽:557
安卓源碼編譯輸入腳本沒反應 瀏覽:47
phpmysql自增 瀏覽:167
把ppt保存為pdf 瀏覽:533
汽車密封件加密配件 瀏覽:887
黑馬程序員15天基礎班 瀏覽:560
java調整格式 瀏覽:521
香港雲伺服器租用價 瀏覽:78
linuxsublime3 瀏覽:560
imac混合硬碟命令 瀏覽:278
沈陽用什麼app租房車 瀏覽:857
00後高中生都用什麼app 瀏覽:239
戴爾塔式伺服器怎麼打開獨立顯卡 瀏覽:807
醫療程序員招聘 瀏覽:598
住宿app可砍價是什麼意思 瀏覽:133