當前位置:首頁 » 編程軟體 » jdk反編譯

jdk反編譯

發布時間: 2022-01-08 00:06:23

1. java編譯class jdk1.5以上工具

推薦用 小穎反編譯工具 我用了好幾年了 我本機有 要的話我發郵件給你

2. 求助java反編譯軟體關於jdk1.5

執行一下看看,這是jdk1.5的輸出:

java.lang.ExceptionInInitializerError
Causedby:java.lang.ArithmeticException:/byzero
atdebug.MyTest.(Test.java:3)
Exceptioninthread"main"

請注意,和其它方法調用時產生的異常一樣,異常被定位於debug.MyTest的.

再來看:

packagedebug;
publicclassTest{
Test(){
inti=100/0;
}
publicstaticvoidmain(String[]args){
newTest();
}
}

jdk1.5輸入:
Exceptioninthread"main"java.lang.ArithmeticException:/byzero
atdebug.Test.(Test.java:4)
atdebug.Test.main(Test.java:7)

3. 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
}

4. 最好的java反編譯工具是哪個

jd-gui 是Java反編譯中比較好用的一個工具,用法如下:

  1. 下載jd-gui

  2. 雙擊打開jd-gui.exe

  3. 單擊左上角的File--->Open File

  4. 找到需要反編譯的.class文件 打開即可

5. 如何查看Class文件編譯的JDK版本

查看class文件編譯的jdk版本步驟如下:

  1. 首先打開cmd命令行窗口,輸入如下指令:


6. 誰會用java反編譯軟體

我以前是用JAD的,你下一個,很簡單,安裝後,把*.class文件考到它的目錄下,在cmd命令行運行jad -s java *.class就可以得到.java文件了.
下載:http://www.66169.com/66664lo/bckf/java/jadnt157.zip
或者還有個圖形操作的界面工具FrontEnd,很不錯的java 反編譯軟體
下載:
http://www.javaresearch.org/members/104876/FrontEnd.exe
比JAVA自帶的好啊
兄弟給分嗎,我回答這么累了..

7. java語言中已經有了.class文件,能反編譯為java文件嗎如何查看源文件

沒有直接反編譯出java文件的反編譯器'但是一般反編譯器都可以查看大體原代碼

8. 求教JDK中的反編譯命令

用習慣了著名的反編譯工具jad的話,如果有的時候單給出class文件,要快速看這個class文件

的JDK版本號等,其實不用工具,也可以用JDK自帶的javap命令進行反編譯輸出,下面小結

其用法:


1,javap -verbose 類名

得到的信息如下:


Compiled from "Test.java"

public class Test extends java.lang.Object

SourceFile: "Test.java"

minor version: 0

major version: 50

Constant pool:

......


可以看出jdk的版本,這個用在判斷某些CLASS的版本是否兼容的時候很有用.


2 最常見的不帶參數的情況:javap 類名


比如某個類:

Java代碼

packagetest;

publicclassTest{

intnumber=5;

publicvoidsayHello(){
System.out.println("Hello");
}
}


則:

C: empjavaptest>javap Test

Compiled from "Test.java"

public class test.Test extends java.lang.Object{

int number;

public test.Test();

public void sayHello();

}


帶參數-c:

則可以看到位元組碼了:


Java代碼

C:	empjavaptest>javap-cTest
Compiledfrom"Test.java"
publicclasstest.Testextendsjava.lang.Object{
intnumber;

publictest.Test();
Code:
0:aload_0
1:invokespecial#1;//Methodjava/lang/Object."<init>":()V
4:aload_0
5:iconst_5
6:putfield#2;//Fieldnumber:I
9:return

publicvoidsayHello();
Code:
0:getstatic#3;//Fieldjava/lang/System.out:Ljava/io/PrintStream;
3:ldc#4;//StringHello
5:invokevirtual#5;//Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
8:return

}


帶參數-l: 將顯示行號和局部變數表


-public 只顯示 public 類及成員。

-protected 只顯示 protected 和 public 類及成員。

-package 只顯示包、protected 和 public 類及成員。這是預設設置。

-private 顯示所有類和成員。

9. 如何將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沒有參數可以去掉它,用別的辦法吧。

10. 反編譯apk時是不是jre和jdk都要安裝

安裝jdk的同時會默認安裝jre的。其實默認安裝即可的,重點是配置環境變數。
如:jdk安裝在「C:\Program Files\java\jdk1.6.0_10」
第一步:新建「java_home」值,輸入「C:\Program Files\java\jdk1.6.0_10」;
第二步:新建「classpath」值,輸入「.;%java_home%\lib」;
第三步:在path中增加「%java_home%\bin」;
備註:配置環境變數在「計算機」右擊「屬性」,之後選擇「高級環境變數」,在選擇「環境變數」即可。

熱點內容
筆記本什麼配置能流暢運行cf 發布:2024-09-20 00:14:19 瀏覽:951
實測華為編譯器 發布:2024-09-19 23:50:52 瀏覽:821
linux匯總 發布:2024-09-19 23:46:39 瀏覽:452
阿里雲伺服器環境搭建教程 發布:2024-09-19 23:21:58 瀏覽:837
黃色文件夾圖標 發布:2024-09-19 23:19:22 瀏覽:684
mysql資料庫導出導入 發布:2024-09-19 23:00:47 瀏覽:183
lua腳本精靈 發布:2024-09-19 23:00:41 瀏覽:659
任務欄文件夾圖標 發布:2024-09-19 22:54:25 瀏覽:101
解壓來一波 發布:2024-09-19 22:46:36 瀏覽:933
mysqlpythonubuntu 發布:2024-09-19 22:46:27 瀏覽:501