jdk反編譯-ag真人国际官网
推薦用 小穎反編譯工具 我用了好幾年了 我本機有 要的話我發郵件給你
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反編譯中比較好用的一個工具,用法如下:
下載jd-gui
雙擊打開jd-gui.exe
單擊左上角的file--->open file
找到需要反編譯的.class文件 打開即可
5. 如何查看class文件編譯的jdk版本
查看class文件編譯的jdk版本步驟如下:
首先打開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."":()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」;
備註:配置環境變數在「計算機」右擊「屬性」,之後選擇「高級環境變數」,在選擇「環境變數」即可。