用jd gui可以直接反編譯class為java代碼。
java中的「反編譯」命令是用來查看class文件的。
在jdk/bin的目錄下有個叫做javap的命令行工具。主要是在分析Class文件的時候比較有用。
❷ java反編譯指令有哪些
反編譯可以用java decompiler,有exe版和eclipse插件版,或者如果ide是idea的話,自帶反編譯功能
❸ java反編譯是什麼意識
java開發的程序的保護 眾所周知,java開發語言提供了很方便的開發平台,而且開發出來的程序很容易在不同的平台上面進行移植,現在越來越多的人使用它開發軟體。 Java有了它方便的一個方面,但是他同時也帶給了開發者一個煩惱,這就是保護的辦法不多,而且大多數不是很好用,這樣自己辛苦開發出來的程序很容易被人復制而據為己有,一般情況下,大多數的人都是用混編器(java obfuscator)來把開發出來的程序進行打亂以達到沒有辦法來反編譯觀看源代碼,但是這種辦法在網上很容易找到相關的軟體來重新整理,那麼這個混編只能控制一些本來也沒有辦法動您的軟體的人,而對於一些掌握工具的人幾乎是透明的,還有就是利用硬體加密鎖,但大多數公司提供的硬體加密鎖只是提供了一些dll的連接或簡單的api調用,只要反編譯他們,就很容易把一些api調用去掉,這樣硬體加密鎖也就不起作用了
❹ 什麼叫java反編譯軟體!
計算機軟體反向工程(Reverse engineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
JD分為JD-GUI、JD-Eclipse兩種運行方式,JD-GUI是以單獨的程序的方式運行,JD-Eclipse則是以一個Eclipse插件的方式運行。
❺ java反編譯出來的代碼求解,解出後可追加50分
為什麼不用Java Decompiler反編譯呢?
不會出現這樣的情況
唯一不足的就是反編譯後原來的變數會變成數值
❻ java反編譯中iload是什麼意思
iload 是jvm指令,將指定的int型本地變數推送至棧頂;
你應該看的是位元組碼吧;
java反編譯工具jd gui,應該是看不到jvm指令的;
關於jvm指令,你網上搜一下可以了解了;
asm.jar java位元組碼生成開源框架有興趣可以學習一下,這個可以了解jvm指令。
❼ java反編譯出來的代碼能用嗎
可以
_d-gui這個工具可以進行反編譯的操作。 不過反編譯的質量隨著混淆的程度而定。特別復雜的代碼(如加密演算法)反編譯一般都有問題。可以建議用 javap -c -p 來看位元組碼。然後參考jvm指令。 一般編譯的文件,都可以反編譯為源碼,但如果是經過加密、以及代碼異常復雜,是很難恢復全部的源碼
❽ 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
}
❾ Java反編譯代碼解釋:
首先,mecuryhope所回答的,僅僅是java層面的東西,但是卻不了解反編譯的過程。
其次,label175和break這些,並不是java代碼,而是反編譯的工具無法真實還原導致的。
label175是一個標簽,而break label175是表示跳轉到label175這里。