導航:首頁 > 源碼編譯 > java代碼反編譯

java代碼反編譯

發布時間:2022-02-28 08:18:58

1. java的打包後jar包裡面的class文件都能被反編譯成為源碼

jd-gui這個工具可以進行反編譯的操作。 不過反編譯的質量隨著混淆的程度而定。
特別復雜的代碼(如加密演算法)反編譯一般都有問題。可以建議用 javap -c -p 來看位元組碼。然後參考jvm指令。
一般編譯的文件,都可以反編譯為源碼,但如果是經過加密、以及代碼異常復雜,是很難恢復全部的源碼。

2. java的反編譯怎麼做的

你做了很多了吧!很好,繼續學吧!
class.forName():載入的是指定的一個類
.class文件是由JAVA虛擬機載入,解釋執行的
閣下 可能把 方向搞錯了。

JAVA的反射機制很強大,基本上所有的涉及到配置文件的,都有反射的影子。尤其是JAVA編程中的框架SSH,ibates等等。

這些框架因為使用了反射機制,在普通程序員眼裡,就只有類和配置。這樣系統很容易擴展和維護。

反射機制 也不要研究得太深,對於中國這個JAVA軟體行業,還是應用維多,你應該不會想自己開發一個框架吧。

3. java反編譯出來的代碼求解,解出後可追加50分

為什麼不用Java Decompiler反編譯呢?
不會出現這樣的情況
唯一不足的就是反編譯後原來的變數會變成數值

4. 如何把apk反編譯成java代碼

一、找到apk中的class.dex:
把apk文件改名為.zip,然後解壓縮其中的class.dex文件,它就是java文件編譯再通過dx工具打包成的。

1、把class.dex拷貝到dex2jar.bat所在目錄,直接拖動class.dex到dex2jar.bat,生成classes.dex.dex2jar.jar。
或者:1.在cmd下進入dex2jar.bat所在路徑,然後輸入「dex2jar.bat XXX」,XXX指的是你要反編譯的apk中的classes.dex文件所在路徑及名稱,比如:我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路徑下, classes.dex在D:\Android下,所以: 你進入dex2jar.bat路徑下後,輸入dex2jar.bat D:\Android\classes.dex,這樣會生成一個jar文件。

2.用rar解壓出jar文件中的class文件,然後用jad或DJ Java Decompiler反編譯工具將.class文件反編譯成.java文件

3、運行JD-GUI工具,打開上面的jar文件,在File下有個Save JAR Source,它可以生成src源代碼。

5. java反編譯

如今JAVA語言在全世界范圍正如火如荼般的流行,它廣范地應用在INTERNET的資料庫、多媒體、CGI、及動態網頁的製作方面。1999年在美國對JAVA程序員的需求量首次超過C++!

作者因最近分析一些JAVA程序,對JAVA的反編譯進行了一番了解,下面將我所了解的情況作以下介紹,希望對JAVA愛好者有所幫助。

JAVA是採用一種稱做「位元組編碼」的程序結構,分為小程序(嵌入到HTML文件中)和應用程序(直接在命令狀態下執行)兩種類型。無論哪種結構,一旦用JAVAC 命令編譯後,均變成後綴為CLASS的同名可執行文件。這種文件是不可閱讀的代碼。

經查閱了SUN公司的JDK(JDK1.1.3)文檔資料後,我找到了一個據稱是可反編譯JAVA的JAVAP文件(EXE),這個文件位於\JDK\BIN\ 下面,經按說明使用後,感到失望,原來這個「反編譯」僅可反編譯出JAVA程序的數據區(定義)、若干方法和類的引用等。

這里我用了一個簡單例子來說明問題。

JAVA的源程序hello_java.java如下:

import java.applet.*;
import java.awt.*;
public class hello_java extends Applet
{
public void paint(Graphics g)
{
g.drawString("Hello Java!\n",20,20);
}
}

經用反編譯命令:javap -c -package -public -private hello_java hello.java

得到的反編譯結果(hello.java)如下:(有關javap命令的選擇參數請見其使用說明,這里-c表示選擇了反編譯)

Compiled from hello_java.java
public synchronized class hello_java extends java.applet.Applet
/* ACC_SUPER bit set */
{
public void paint(java.awt.Graphics);
public hello_java();
Method void paint(java.awt.Graphics)
0 aload_1
1 ldc #1
3 bipush 20
5 bipush 20
7 invokevirtual #6
10 return
Method hello_java()
0 aload_0
1 invokespecial #5 ()V>
4 return
}

6. Java反編譯代碼解釋:

首先,mecuryhope所回答的,僅僅是java層面的東西,但是卻不了解反編譯的過程。
其次,label175和break這些,並不是java代碼,而是反編譯的工具無法真實還原導致的。

label175是一個標簽,而break label175是表示跳轉到label175這里。

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

可以用java反編譯器,DJ_java_discompiler 打開下載好的DJ_java_discompiler
選擇file,之後點擊open。之後出現以下界面。這里我選擇一個test.class文件。
點擊打開之後,出現以下反編譯test.java後的界面。
這個是test.java的文件。可以看出反編譯後的結果是正確的。
如果以後想看.class文件的源碼,可以用這種方式查看。

8. 如何在linux中反編譯java源代碼

之前看同事使用JD-GUI來反編譯java
.class文件,覺得很爽,不過一直以來也沒有再次接觸到這個問題,所以也沒有對這個工具進行深入的了解。

今天無聊看了些技術文檔,忽然想起這個工具來,上網一找。呼呼果真也有Linux的版本。
不過我網上資料顯示主頁上下載的gz包是32位的程序,我在64位的Fedora
12下可能有些問題,程序在運行時會調用不到關鍵的32位庫而失敗。幸運的是只要安裝幾個包即可:

yum install
libcanberra-gtk2.i686 PackageKit-gtk-mole.i686
gtk2-engines.i686

下載後:
tar -xzvf
jd-gui-0.3.2.linux.i686.tar.gz
sudo mv jd-gui
/usr/local/bin

至此jd-gui便可以在linux下運行,對於class或者jar文件都可以使用這個工具打開查看反編譯源碼
轉載,僅供參考。

9. 如何將class文件反編譯為java代碼

jdgui 最簡單易用的反編譯工具, 直接把class拖進去 就可以看到.java代碼了, 附件已經上傳, 電腦打開可以下載

10. Java反編譯後得到的不是Java源代碼。

估計你得到的是java虛擬機指令,因為.class文件與java源代碼不是一一對應的,但與虛擬機指令卻是一一對應的,就像exe文件中的機器指令與匯編指令是一一對應的,要看懂這些代碼可以參考java虛擬機指令集

閱讀全文

與java代碼反編譯相關的資料

熱點內容
關於加密貨幣使用分布的圖表 瀏覽:329
王的命令哪個app好看 瀏覽:765
快樂大本營比臉app叫什麼 瀏覽:679
wt是什麼伺服器 瀏覽:127
首頁indexphp模板 瀏覽:343
java7並發編程實戰手冊pdf 瀏覽:342
windows列印機編程 瀏覽:234
怎麼用紙做解壓小方塊 瀏覽:264
8253的編程方式 瀏覽:140
雲伺服器無法連接到當前網路 瀏覽:469
香港伺服器什麼時候租用 瀏覽:600
福州高精密三坐標測量儀編程 瀏覽:711
變數的作用域編譯預處理 瀏覽:179
程序員買台式機好還是筆記本 瀏覽:812
安卓叮當貓年卡怎麼樣 瀏覽:428
自學旅遊英語用什麼app 瀏覽:155
linux埠開放命令 瀏覽:681
單片機小汽車 瀏覽:953
思考與決策pdf 瀏覽:624
ted加密貨幣 瀏覽:721