當前位置:首頁 » 電腦資訊 » 復制的class文件為什麼不能反編譯

復制的class文件為什麼不能反編譯

發布時間: 2022-08-20 23:41:10

㈠ Java class文件能反編譯嗎

能的!
裝個Eclipse反編譯插件: Jodeclipse、JadClipse
或XJad反編譯

㈡ 怎麼反編譯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沒有參數可以去掉它,用別的辦法吧。

㈢ java問題:為什麼有些class文件反編譯不了

private 的屬性 方法不會被反編譯出來的。

還有就是某些class是作者用自己的編譯器編譯的.你也反編譯不出來
還有就是加密了.

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

㈤ 誰有辦法把class文件反編譯為java嗎,不能出任何錯誤。我用jd總是有錯誤,而且好像有層級限制

jd只是適合少量class文件,如果太多的話,類的引用就太繁瑣了,偶爾會出錯。我也是用XJAD反編譯的,它可以反編譯一個jar包。反編譯有啥原理呢?虛擬機將*.java文件編譯成位元組碼(*.class文件)然後,在編譯成本地機器碼,執行;我們一般用來傳播的也就是*.class文件,這是一種有標准格式的位元組碼,開發工具按這個格式在將轉換為*.java程序,就這樣咯。而且,如果你要學了*.class文件的結構,自己都能計算出對應的*.java文件,只不過很復雜,很繁瑣。

㈥ 我在eclipse中安裝了javaclipse.jar和jad.exe,可是不能反編譯class文件...

可以查看一下eclipse中class文件的默認打開方式是否是JadClipse Class File Viewer。如果不是默認,可以在Eclipse的Windows——> Perference——>General->Editors->File Associations中修改「*.class」默認關聯的編輯器為「JadClipse Class File Viewer」。設置完成後,雙擊*.class文件,eclipse將自動反編譯

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

可以使用jad:反編譯工具
可以將class文件反編譯成java文件
假設將jad.exe安裝在f:/java/jad目錄下
把要反編譯的文件*.class復制到此目錄下,接著接以下步驟,
在命令行窗口環境中進入jad目錄,
然後運行:jad -s java *.class (附,*.class指要反編譯的文件名)
如果*.class文件和jad程序不在同一個目錄,就要用到path環境變數,
將jad 所在目錄加到path路徑中即可:set path=%path%;f:/java/jad
若要了解jad更為詳細的使用幫助信息,直接運行jad.exe查看

㈧ 可以反編譯.class文件嗎

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

熱點內容
為什麼晚上吃他汀葯 發布:2024-05-04 11:42:29 瀏覽:822
為什麼癌症病人找不到靶點 發布:2024-05-04 11:17:57 瀏覽:663
為什麼玫瑰花茶越開顏色越淡 發布:2024-05-04 11:10:09 瀏覽:913
為什麼不能握筆時間過長 發布:2024-05-04 11:04:15 瀏覽:239
為什麼隔一段時間就打呼嚕 發布:2024-05-04 11:03:21 瀏覽:970
為什麼人類進化不一樣 發布:2024-05-04 10:58:53 瀏覽:983
為什麼頭發是個好東西 發布:2024-05-04 10:48:31 瀏覽:991
為什麼電影找不到片源 發布:2024-05-04 10:44:21 瀏覽:221
地圖淘金為什麼找不到駕車 發布:2024-05-04 10:38:45 瀏覽:418
手機卡為什麼一直顯示已關機 發布:2024-05-04 10:29:14 瀏覽:489