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

java8反編譯

發布時間: 2023-07-20 12:30:05

❶ 求各種好用的反編譯工具!!

如PB的,最常用的是 PB反編譯專家 SHUDEPB
.net,一般是Reflector
dephi,一般是dede
java,比較出名的有小穎的反編譯專家

XJad(Java源代碼反編譯工具) V2.2

XJad是基於Jad核心的Java源程序反編譯軟體,內置Jad1.5.8e2。
XJad可處理多個*.class文件,可以處理文件夾內的所有文件,甚至可以處理*.jar文件。
XJad帶有多頁面文本編輯器,反編譯完成後可以直接編輯查看,編輯器支持java語法的高亮顯示功能。
XJad是一個純綠色軟體,為使用方便,可以在選項中設置集成到資源管理器中,這樣在*.class、*.java、*.jar文件和目錄上隨時點擊右鍵都可直接進行操作。
XJad還帶有導出當前編輯器中的代碼為HTML文件的功能,HTML文件保持代碼高亮顯示的樣式風格。
使用說明
===========
1、反編譯class文件:打開一個或者多個*.class文件,XJad反編譯後,重命名為*.java文件,保存至當前文件夾,並在編輯器中打開查看;
2、反編譯文件夾:在軟體中選擇反編譯文件夾或右鍵點擊文件夾選擇反編譯,XJad將該文件夾下所有*.class文件進行反編譯,並保存至該文件夾下,依據包路徑信息生成文件夾路徑,如com.spring.framework.*,將建立com\\spring\\framework的文件夾結構;
3、反編譯jar文件:打開一個*.jar文件,XJad將該Jar文件中的所有*.class文件解壓縮到臨時目錄並進行反編譯,並將源文件帶包路徑信息保存至當前文件夾下名稱為「~」 + *.jar 的文件夾中;

flash反編譯工具 閃客精靈

❷ flutter 反編譯

>You are building a fat APK that includes binaries for android-arm, android-arm64.

>If you are deploying the app to the Play Store, it's recommended to use app bundles or split the APK to rece the APK size.

>    To generate an app bundle, run:

>        flutter build appbundle --target-platform android-arm,android-arm64

>        Learn more on: https://developer.android.com/guide/app-bundle

>    To split the APKs per ABI, run:

>        flutter build apk --target-platform android-arm,android-arm64 --split-per-abi

>        Learn more on:  https://developer.android.com/studio/build/configure-apk-splits#configure-abi-split

>Initializing gradle...                                              2.3s

>Resolving dependencies...                                          14.2s

>Running Gradle task 'assembleRelease'...                                                  ע: E:\work_tool\flutter\.pub-cache\hosted\pub.flutter-io.cn\connectivity-0.4.4\android\src\main\java\io\flutter\plugins\connectivity\ConnectivityPlugin.javaʹ�û򸲸����ѹ�ʱ�� API��

>ע: �й���ϸ��Ϣ, ��ʹ�� -Xlint:deprecation ���±��롣

>ע: E:\work_tool\flutter\.pub-cache\hosted\pub.flutter-io.cn\url_launcher-5.1.3\android\src\main\java\io\flutter\plugins\urllauncher\WebViewActivity.javaʹ

>�û򸲸����ѹ�ʱ�� API��

>ע: �й���ϸ��Ϣ, ��ʹ�� -Xlint:deprecation ���±��롣

>Calling mockable JAR artifact transform to create file: C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\android.jar\\android.jar with input E:\work_tool\sdk\android-sdk-windows\platforms\android-28\android.jar

>Calling mockable JAR artifact transform to create file: C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\android.jar\\android.jar with input E:\work_tool\sdk\android-sdk-windows\platforms\android-27\android.jar

>Request to incrementing alive workforce from 0. Current workforce (dead or alive) 0

>thread-pool size=4

>ProGuard, version 6.0.3

>Reading input...

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\flutter.jar\\jetified-flutter.jar] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\app\intermediates\flutter\release\libs.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\localbroadcastmanager-1.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\work-runtime-2.1.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\fragment-1.1.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\room-runtime-2.1.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\room-runtime-2.1.0.aar\\jars\libs\room-common-java8-2.1.0.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\viewpager-1.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\loader-1.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\activity-1.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\customview-1.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\core-1.1.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\versionedparcelable-1.1.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\moles-2\files-2.1\androidx.collection\collection\1.1.0\\collection-1.1.0.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-livedata-2.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-livedata-core-2.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\core-runtime-2.0.1.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\moles-2\files-2.1\androidx.room\room-common\2.1.0\\room-common-2.1.0.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\sqlite-framework-2.0.1.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\sqlite-2.0.1.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-service-2.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-runtime-2.1.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-viewmodel-2.1.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\savedstate-1.0.0.aar\\jars\classes.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\moles-2\files-2.1\androidx.lifecycle\lifecycle-common\2.1.0\\lifecycle-common-2.1.0.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\moles-2\files-2.1\androidx.arch.core\core-common\2.1.0\\core-common-2.1.0.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\moles-2\files-2.1\androidx.annotation\annotation\1.1.0\\annotation-1.1.0.jar] (filtered)

>Reading program jar [C:\Users\Administrator\.gradle\caches\moles-2\files-2.1\com.google.guava\listenablefuture\1.0\\listenablefuture-1.0.jar] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\flutter_downloader\intermediates\intermediate-jars\release\classes.jar] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\shared_preferences\intermediates\intermediate-jars\release\classes.jar] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\url_launcher\intermediates\intermediate-jars\release\classes.jar] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\sqflite\intermediates\intermediate-jars\release\classes.jar] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\connectivity\intermediates\intermediate-jars\release\classes.jar] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\path_provider\intermediates\intermediate-jars\release\classes.jar] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\package_info\intermediates\intermediate-jars\release\classes.jar] (filtered)

>Reading program directory [F:\dartSpace\flutter\jiddspace\nfc\build\app\intermediates\javac\release\compileReleaseJavaWithJavac\classes] (filtered)

>Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\app\intermediates\transforms\mergeJavaRes\release\0.jar] (filtered)

>Reading library jar [C:\Users\Administrator\.gradle\caches\moles-2\files-2.1\androidx.annotation\annotation\1.0.0\\annotation-1.0.0.jar] (filtered)

>Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\android.jar]

>Reading library jar [E:\work_tool\sdk\android-sdk-windows\build-tools\28.0.3\core-lambda-stubs.jar]

>Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\optional\org.apache.http.legacy.jar]

>Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\optional\android.test.mock.jar]

>Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\optional\android.test.base.jar]

>Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\optional\android.test.runner.jar]

>Initializing...

>Warning: io.flutter.embedding.android.FlutterView: can't find referenced method 'android.graphics.Insets getSystemGestureInsets()' in library class android.view.WindowInsets

>Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.view.FlutterView: can't find referenced method 'android.graphics.Insets getSystemGestureInsets()' in library class android.view.WindowInsets

>Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

>Note: io.flutter.view.AccessibilityViewEmbedder$ReflectionAccessors: can't find dynamically referenced class android.util.LongArray

>Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

>Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

>Note: there were 1 unresolved dynamic references to classes or interfaces.

>      You should check if you need to specify additional program jars.

>      (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)

>Warning: Exception while processing task java.io.IOException: Please correct the above warnings first.

>Thread(Tasks limiter_1): destruction

>Warning: there were 12 unresolved references to classes or interfaces.

>        You may need to add missing library jars or update their versions.

>        If your code works fine without the missing classes, you can suppress

>        the warnings with '-dontwarn' options.

>        (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)

>Warning: there were 2 unresolved references to library class members.

>        You probably need to update the library versions.

>        (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)

>

>FAILURE: Build failed with an exception.

>

>* What went wrong:

>Execution failed for task ':app:'.

>> Job failed, see logs for details

>

>* Try:

>Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

>

>* Get more help at https://help.gradle.org

>

>BUILD FAILED in 4m 23s

>Running Gradle task 'assembleRelease'...

>Running Gradle task 'assembleRelease'... Done                    264.4s (!)

>*******************************************************************************************

>The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.

>See https://goo.gl/CP92wY for more information on the problem and how to fix it.

>*******************************************************************************************

>Gradle task assembleRelease failed with exit code 1

❸ java的反編譯怎麼使用,說具體點

1.下載jad1.5.8e
http://www.kps.com/jad.html#download
下載後解壓。解壓縮後將jad.exe拷貝到JRE的bin目錄下,如\Java\jre1.5.0_06\bin

2.下載 jadclipse_3.1.0.jar
http://jaist.dl.sourceforge.net/sourceforge/jadclipse/jadclipse_3.1.0.jar
將jadclipse_3.1.0.jar復制到D:\Program Files\eclipse\myplugin\eclipse\plugins目錄下(用的是

link方式安裝插件的)。

3.啟動Eclipse後,在Windows-->Perference-->Java下面應該會多出一個JadClipse目錄,相關的設置可

以在此修改
配置jadclipse:設置path to decompiler為jad.exe的全路徑,如:F:\Java\jre1.5.0_06\bin\jad.exe

,在Directory for temporary files中指定臨時文件的路徑,如:G:\Java\eclipse-SDK-3.0-win32\temp
4、在Eclipse的Windows-->Perference-->General->Editors->File Associations中修改「*.class」默

認關聯的編輯器為「JadClipse Class File Viewer」
5、安裝完成,雙擊class文件,Eclipse將自動反編譯了。

❹ jad反編譯工具怎麼用

下好以後解壓就可以用了,軟體就只有一個exe文件和一個幫助文件,為了方便使用,我直接將exe文件放到JDK的bin目錄里了:)
下面先來看看從網上搜集來的介紹:在眾多的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參數太多,沒必要一一解釋,其中有幾個最常用的如下:

-d - 用於指定輸出文件的目錄

-s - 輸出文件擴展名(默認為: .jad),通常都會把輸出文件擴展名直接指定為.java,以方便修改的重新編譯。

-8 - 將Unicode字元轉換為ANSI字元串,如果輸出字元串是中文的話一定要加上這個參數才能正確顯示。
最常用的反編譯指令如下所示:

Jad -d c:\test -s .java -8 HelloWorld.class

這將當前目錄下的HelloWorld.class反編譯為HelloWorld.java並保存在c:\test目錄里,其中的提示輸出為中文,
而不是Unicode代碼。
附件:對下載後的說明文檔的簡單翻譯,希望對你有所幫助(mathsfan修改於2006.10.29,翻譯的不好請見諒)0、1略去2、怎樣使用JAD
反編譯一個簡單的java class文件'example1.class'用如下命令: jad example1.class
這個命令將在當前目錄下創建一個'example1.jad'文件,假如當前目錄下存在這個文件,則JAD會提示你覆蓋它與否。選項
-o 允許覆蓋時沒有任何提示。選項 -s 允許改變輸出文件的後綴名: jad -sjava example1.class
這個命令將要創建'example1.java'文件。在一起使用-o 和
-sjava選項時請小心,因為JAD會附帶的重寫你的源文件。JAD使用JAVA
class的名字作為輸出文件的名字。例如,假如class文件'example1.class'包含JAVA class
'test1'那麼JAD將會創建文件'test1.jad'而不是'example1.jad'。假如你想具體指明你的輸出文件的名字使用輸出重命名:

jad -p example1.class > myexm1.java

選項 –d允許你具體指明另外的輸出文件目錄,不管這個目錄是新建的、默認的或者當前目錄。例如:

jad -o -dtest -sjava *.class

(或者 jad -o -d test -s java *.class, 這個有同樣的效果)

這個命令將在當前目錄下反編譯所有的.class文件並在'test'文件夾下建立所有擴展名為.java的輸出文件。

假如你想反編譯整個目錄樹下的JAVA classes,使用如下命令:

jad -o -r -sjava -dsrc tree/**/*.class

這個命令將反編譯當前目錄樹里所有的.class文件並且在當前目錄下建立src文件夾後根據包的名字來輸出文件。例如,假如有一個文件
'tree/a/b/c.class'在包'a.b'下包含了class 'c',那麼輸出文件的名字為'src/a/b/c.java'。

在先前的命令上將通配符那裡注釋掉。則它是用JAD來處理而不是command殼,所以在UNIX上的最後一次參數將會被單獨引用。

jad -o -r -sjava -dsrc 'tree/**/*.class'

你想檢查編譯後的文件的正確性或者出於好奇的情況下,這里有一個選項 –a 將會告訴JAD給輸出的JAVA虛擬位元組碼註解。

❺ 怎麼把class文件反編譯成java文件

一、基本用法
Usage:jad [option(s)]
直接輸入類文件名,且支持通配符,如下所示。
c:java>jad example1.class
c:java>jad *.class
結果是將example1.class反編譯為example1.jad。將example1.jad改為example1.java即得源文件。

二、Option -o
不提示,覆蓋源文件

三、Option -s
c:java>jad -sjava example1.class
反編譯結果以.java為擴展名。

四、Option -p
將反編譯結果輸出到屏幕
c:java>jad -p example1.class
將反編譯結果重定向到文件
c:java>jad -p example1.class>example1.java

五、Option -d
指定反編譯的輸出文件目錄
c:java>jad -o -dtest -sjava *.class

六、jad:反編譯工具下載

可以將class文件反編譯成java文件

假設將jad.exe安裝在f:/java/jad目錄下

把要反編譯的文件*.class復制到此目錄下,接著接以下步驟,

在命令行窗口環境中進入jad目錄,

然後運行:jad -s java *.class (附,*.class指要反編譯的文件名)

如果*.class文件和jad程序不在同一個目錄,就要用到path環境變數,

將jad 所在目錄加到path路徑中即可:set path=%path%;f:/java/jad

若要了解jad更為詳細的使用幫助信息,直接運行jad.exe查看

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

❼ 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自帶的一些常式完全反編譯,然後不加任何修改可再編譯成功,並能正常運行!

熱點內容
項目編譯慢 發布:2025-02-06 16:53:48 瀏覽:379
python處理excel文件 發布:2025-02-06 16:36:09 瀏覽:441
演算法相對定位 發布:2025-02-06 16:32:42 瀏覽:727
java程序的編譯和執行 發布:2025-02-06 16:21:45 瀏覽:419
什麼是淘寶帳號和密碼 發布:2025-02-06 16:21:36 瀏覽:497
解壓前面簽 發布:2025-02-06 16:02:00 瀏覽:326
華碩訪問點 發布:2025-02-06 15:56:57 瀏覽:333
excel拼接sql 發布:2025-02-06 15:50:10 瀏覽:503
加密手機直播 發布:2025-02-06 15:49:31 瀏覽:537
自帶ftp伺服器好用嗎 發布:2025-02-06 15:26:11 瀏覽:112