java反編譯修改
安裝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的反編譯
作者因最近分析一些JAVA程序 對JAVA的反編譯進行了一番了解 下面將我所了解的情況作以下介紹 希望對JAVA愛好者有所幫助 JAVA是採用一種稱做 位元組編碼 的程序結構 分為小程序(嵌入到HTML文件中)和應用程序(直接在命令狀態下執行)兩種類型 無論哪種結構 一旦用JAVAC 命令編譯後 均變成後綴為CLASS的同名可執行文件 這種文件是不可閱讀的代碼 經查閱了SUN公司的JDK(JDK )文檔資料後 我找到了一個據稱是可反編譯JAVA的JAVAP文件(EXE) 這個文件位於JDKBIN 下面 經按說明使用後 感到失望 原來這個 反編譯 僅可反編譯出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 );}} 經用反編譯命令 javap c package public private hello_java hello java 得到的反編譯結果(hello java)如下 (有關javap命令的選擇參數請見其使用說明 這里 c表示選擇了反編譯)Compiled from hello_java javapublic 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) aload_ ldc # bipush bipush invokevirtual # returnMethod hello_java() aload_ invokespecial # ()V > return}從上述結果不難看出該反編譯未能將源程序全譯出來 像語句g drawString( Hello Java!n ); 就沒有 隨著程序量增加 未能編譯的JAVA語句還會更多 所以這個反編譯程序僅能起個參考作用 幸虧有了INTERNET 筆者通過YAHOO很快找到了一個JAVA反編譯 自由軟體 (SHAREWARE) 這個軟體叫MOCHA 據說是一位 來歲的加拿大的研究生所完成 僅是個 ? 版 原因是這位叫做H P VAN VLIET的小夥子患癌逝世了 十分可惜呀!經使用MOCHA反編譯軟體 感到這個軟體十分好用 筆者試反編譯多個JAVA程序 均得到很好的結果 這里給出如何使用這個軟體 首先 用WINZIP等將 mocha b zip 解開得到 mocha zip 文件 mocha zip 不須再解開 這個包內包括了反編譯的類文件 只需將其拷貝到JDK所在的目錄下 如 c:jdkbin 此外 須設置路徑 SET CLASSPATH=c:myclasses;c:jdkbinmocha zipMOCHA用法 java mocha Depiler [ v] [ o] Class class Class class java 調用Java虛擬機 mocha Depiler 指示要進行JAVA反編譯 v 選擇詳細輸出 o 選寫入已有的 mocha 文件 ClassX class 指出要反編譯類名注意 不需給出輸出的JAVA文件名 因為MOCHA自動產生一個與CLASS同名但擴展名為MOCHA的JAVA源文件 對於上例 可用命令 java mocha Depiler [ v] [ o] hello_java class得到的源文件 /* Depiled by Mocha from hello_java class *//* Originally piled from hello_java java */import java applet Applet;import java awt Graphics;public synchronized class hello_java extends Applet{public void paint(Graphics g){g drawString( Hello Java!n );}public hello_java(){}}我們不難發現 此文件與編譯前的JAVA源文件完全一樣!筆者曾經用MOCHA反編譯出最大為 K的源文件 均取得成功 在此 筆者向英年早逝的VLIET表示敬意 感謝他給我們留下這個工具軟體 如讀者下載MOCHA有困難 可給筆者來電子郵件 筆者可將MOCHA寄去 參考文獻 ) ) ) ) lishixin/Article/program/Java/Javascript/201311/25331
❸ 怎麼把.class文件反編譯成.java 經修改後再編譯成.class
網友分享的:
一、反編譯:下載一個jad
反編譯工具jad簡單用法
以下假設jad.exe在c:/java目錄下
一、基本用法
Usage:jad[option(s)]
直接輸入類文件名,且支持通配符,如下所示。
c:/java/>jadexample1.class
c:/java/>jad*.class
結果是將example1.class反編譯為example1.jad。將example1.jad改為example1.java即得源
文件。
二、Option-o
不提示,覆蓋源文件
三、Option-s
c:/java/>jad-sjavaexample1.class
反編譯結果以.java為擴展名。
四、Option-p
將反編譯結果輸出到屏幕
c:/java/>jad-pexample1.class
將反編譯結果重定向到文件
c:/java/>jad-pexample1.class>example1.java
五、Option-d
指定反編譯的輸出文件目錄
c:/java/>jad-o-dtest-sjava*.class
二:修改、再編譯
用Eclipse新建工程,再將反編譯出的Java文件按原樣導入工程,就可以修改代碼。修改並調試後,點擊Eclipse菜單中的文件→導出→Java→可運行的JAR文件,選擇配置工程和導出路徑,然後點完成即可導出。
❹ 最好的java反編譯工具是哪個
1、Java反編譯插件 —— Jadclipse
JadClipse是Jad的Eclipse插件,是一款非常實用而且方便地Java反編譯插件,我們只需將下載的插件包復制到eclipse的plugins目錄下,然後修改window -> Preferences -> Java -> JadClipse 下的Path to decompiler ,如:C:\pin\jadnt158\jad.exe,最後在Windows -> Perference -> General -> Editors -> File Associations中修改「*.class」默認關聯的編輯器為「JadClipse Class File Viewer」 即可。
2、Java反編譯工具 jad
jad是一款使用非常廣泛地Java反編譯工具,上面這款Jadclipse就是基於jad的反編譯插件,JAD 文件包含 MIDlet 套件的標題信息,例如開發應用程序的公司、應用程序名稱和大小。
3、Java 反編譯器 JD-GUI
JD-GUI 是一個用 C++ 開發的 Java 反編譯工具,由 Pavel Kouznetsov開發,支持Windows、linux和蘋果Mac Os三個平台。而且提供了Eclipse平台下的插件JD-Eclipse。JD-GUI不需要安裝,直接點擊運行,可以反編譯jar,class文件。
4、Java反編譯器 jdec
jdec是一個Java反編譯器。它能夠把出現在一個.class文件中的位元組碼還原成Java源代碼,反編譯的結果幾乎與原始Java文件相同。它還自帶一個利用swing開發的用戶操作界面。
5、uuDeJava
uuDeJava是Java Class文件的反編譯工具。反編譯的Java源程序被輸出到Class的相同目錄。內部使用jad.exe。反編譯Class文件時,可以直接點擊Class文件(關聯後),或者選中文件或目錄發送到uuDeJava的快捷方式。還可以拖動文件或目錄到uuDeJava的主窗口。
6、Java 反向工程軟體 Minjava
Minjava 是一個 Java 反向工程軟體,可幫助理解已存在一些 Java 軟體的架構和行為。
7、Java Decompiler
這款反編譯器叫 「Java Decompiler」, 由 Pavel Kouznetsov開發,目前最新版本為0.2.5. 它由 C++開發,並且官方可以下載 windows、linux和蘋果Mac Os三個平台的可執行程序。
❺ 如何將手機java軟體反編譯修改後再編譯成jar
這個很簡單,把jar包反編譯這個你應該知道了,很多工具jd
gui就是不錯的一個,然後,你用Eclipse等工具把你反編譯的文本貼到java文件中。
這時肯定有編譯錯誤,你可以把你軟體中的jar包都引為classpath下。
編譯通過後,就可以去取.class文件了再放回jar包中原有的目錄。
全部搞定。
❻ 誰有Java反編譯工具的具體方法啊
應該是在Eclipse安裝Java反編譯工具吧,過程很簡單:
1、下載jad.exe以及jadclipse_xxx.jar。(注意xxx表示版本,最好先看看你的Eclipse版本,然後網站搜索對應jar包以及jad.exe版本)
2、把jadclipse_xxx.jar放在Eclipse根目錄plugins文件夾里、把jad.exe放在jdk根目錄bin文件夾里。
3、設置參數(Eclipse):Window->Preferences->Java->JadClipse-->Path to decompiler,指向jad.exe的目錄。
4、配置*.class文件關聯(Eclipse):Windows-->Perference-->General-->Editors-->File Associations中修改「*.class」默認關聯的編輯器為「JadClipse Class File Viewer」。
❼ 有沒有比較完美的JAVA反編譯方法
1、Java反編譯插件 —— Jadclipse JadClipse是Jad的Eclipse插件,是一款非常實用而且方便地Java反編譯插件,我們只需將下載的插件包復制到eclipse的plugins目錄下,然後修改window -> Preferences -> Java -> JadClipse
❽ Java反編譯工具的用法
反編譯得出的代碼,是JAVA文件在生成CLASS文件時,做過優化的代碼。
所以跟你的原文件不一樣(比如:注釋全沒有,中文全變成Unicode碼,字元串連接全部用StringBuffer類來代替,自動增加else語句等等)。
所以,你要是想修改反編譯出來的代碼,可以:
1、將反編譯出的代碼復制到一個新建的類文件里
2、運行這個文件
3、根據錯誤提示,進行修改
以上是,我用過的方法。
❾ JAVA反編譯軟體
由於JAVA語言安全性高、代碼優化、跨平台等特性,從1995年5月由SUN公司發布後,迅速取代了很多傳統高級語言,占據了企業級網路應用開發等諸多領域的霸主地位。
不過,JAVA最突出的跨平台優勢使得它不能被編譯成本地代碼,而要以中間代碼的形式運行在虛擬機環境中,這使得JAVA的反編譯要比別的高級語言容易實現,並且反編譯的代碼經過優化後幾乎可以與源代碼相媲美。
為了更好地保護知識產權,避免本公司的智力成果輕易被人竊取,開發者有必要對反編譯工具深入了解,以便有針對性地採取保護措施。
目前,比較流行的JAVA反編譯工具有近30種,其中有三款堪稱精品:
一、 應用廣泛的JAD
在眾多的JAVA反編譯工具中,有幾種非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI』s Java Class Viewer和國產的JAVA源代碼反編譯專家。
JAD本身是一個命令行工具,沒有圖形界面,上述的這些工具大多是在JAD內核的基礎之上加了一個圖形界面而已。這么多種產品的共同選擇,足可證明JAD在JAVA反編譯領域中的尊貴地位。
JAD是使用Microsoft Visual C++開發的,運行速度非常快,可以處理很復雜的JAVA編譯文件。眾多的參數使JAD可以靈活應付多種加密手段,令反編譯的代碼更加優化和易讀。由於JAD參數太多,沒必要一一解釋,其中有幾個最常用的如下(以JAD 1.5.8f版本為例):
-d
- 用於指定輸出文件的目錄
-s - 輸出文件擴展名(默認為: .jad),通常都會把輸出文件擴展名直接指定為.java,以方便修改的重新編譯。
-8 - 將Unicode字元轉換為ANSI字元串,如果輸出字元串是中文的話一定要加上這個參數才能正確顯示。
最常用的反編譯指令如下所示:
Jad –d c:\javasource –s .java -8 javatest.class
這條指令將當前目錄下的javatest.class反編譯為javatest.java並保存在c:\javasource目錄里,其中的提示輸出為中文,而不是Unicode代碼。
二、 源碼開放的JODE
JODE是全球最大的開源項目網站Sourceforge.net的成員,在所有的JAVA反編譯器中,JODE的反編譯效果是最好的,尤其是對付一些常見的加密手段,例如混淆技術等,更是出類拔粹。
JODE本身也是純JAVA開發的,最近越來越多的JAVA反編譯軟體也選擇JODE來做它們的核心引擎,例如JCavaj Java Decompiler、BTJ (Back To Java)、jEdit』s JavaInsight plugin等。
JODE是一個可運行的JAR文件,在windows環境下雙擊即可運行。
需要特別說明的是,JODE不是通過常規的Open->File的方式來載入JAVA編譯後的類文件(*.class)或是類包(*.jar)的, 而是通過在Options菜單中的Set Classpath來實現的,單獨的類文件可以將它的上一級目錄作為Classpath輸入,然後再選擇Reload Classpath即可。
新加入的類包或是類的名字會在左側窗口出現,雙擊類包名可以展開目錄樹結構,雙擊需要反編譯的類名則在右上角的窗口中直接顯示反編譯後的源代碼。
三、 獨樹一幟的DAVA
DAVA不是一個獨立的JAVA反編譯器,而是JAVA代碼優化工具Soot的一部分。Soot和JODE一樣是純JAVA開發的,也是一個獨立的JAR包,但卻不能通過雙擊直接運行,而是象JAD一樣在命令行狀態運行。
Soot對環境變數的配置要求非常嚴格,通常情況下要對CLASSPATH做如下設置:
Set CLASSPATH=%CLASSPATH%;c:\sootdir\sootclasses-2.1.0.jar;.;
其中的c:\sootdir\是下載的soot類包放置的路徑,CLASSPATH末尾的.;代表了當前目錄,如果不加上這個的話Soot經常會報一個找不到類的錯誤。
DAVA是作為Soot的一個參數使用的,通常的用法如下:
Java soot.Main –f dava –d c:\javasource javatest
注意最後的類名不用帶.class後綴,因為它默認是處理class文件,這個操作與前述的JAD的參數效果相同。
DAVA採取了流程優化的方式進行反編譯,與傳統反編譯思路不盡相同,但卻對改變流程類的加密方法有獨特的反編譯效果。
上述的三種工具各有千秋,但效果都非常不錯。經測試,它們基本上都可以把JDK自帶的一些常式完全反編譯,然後不加任何修改可再編譯成功,並能正常運行!