java批量反編譯工具
本文對常用的反編譯工具進行簡單介紹
JD-GUI、procyon-decompiler、luyten、crf
反編譯工具分類JD-GUI
JDK7以及之前可以使用 JD-GUI,如果版本>=1.8 各種問題
procyon-decompiler
如果版本>=1.8 ,可以使用 procyon-decompiler,不過是命令行界面
luyten
luyten是Procyon的GUI,只需要下載luyten即可,不用下載Procyon
https://github.com/deathmarine/Luyten
下載地址
crf
crf也可以支持更高版本
小結
如果你的版本<=7,都可以使用,如果版本更高,請使用除了JD-GUI以外的選擇
使用JD-GUI
略,JD-GUI網上教程很多,不再介紹。
procyon-decompiler
可以直接解析class文件到cmd窗口顯示
也可以將反編譯之後的文件保存到指定位置,如果需要保存在指定位置,需要增加 -o命令參數,並且需要指定保存的路徑
直接顯示:
java -jar D:\ApplicationFiles\program\procyon-decompiler-0.5.30.jar D:\ProgramData\ideaProjects\...\news\NewsController.class保存文件:
java -jar D:\ApplicationFiles\program\procyon-decompiler-0.5.30.jar D:\ProgramData\ideaProjects\...\news\NewsController.class -o C:\Users\noteless\Desktop\ddddddluytenluyten是圖形化界面
通過File直接打開class文件即可
當然,也可以進行文件保存等操作
注意
直接打開luyten的時候,給出了下面的提示信息
但是,系統中的java環境是沒有問題的,也是一直在使用的,CMD下運行java或者javac命令都沒有問題
這是為什麼?
據網上分析是因為使用了免安裝版本的JDK,簡單說不是從官網下載可執行程序一步一步安裝而來
這也就導致了注冊表中不存在JDK的信息
一種變通的途徑就是藉助於命令,通過在命令提示符下面輸入 java -jar .\luyten-0.5.4.exe打開
(此時,我的文件存在於桌面上,所以使用的當前路徑)
如果設置到其他位置,請給出路徑,比如
也可以進一步設置為bat命令
文件就一行內容:
java -jar D:\ApplicationFiles\program\luyten-0.5.4.exe再進一步可以創建一個快捷方式,使用下文的方式,就可以直接使用WIN鍵+R打開
https://www.cnblogs.com/noteless/p/10471005.html
另一種方法,就是手動設置注冊表
還有一種方法是重新安裝JDK,走一遍過程
建議通過命令java -jar就好了,改注冊表後續出現什麼奇怪問題,自己可能都忘記了是自己改出來的
重新安裝麻煩費事
CFR
http://www.benf.org/other/cfr/
CFR更新還是蠻及時的
它的使用,與procyon-decompiler沒有區別
可以直接反編譯呈現在CMD中,也可以輸出到文件中
直接解析:
C:\Users\noteless>java -jar D:\ApplicationFiles\program\cfr-0.141.jar C:\Users\noteless\Desktop\NewsController.class輸出文件:
java -jar D:\ApplicationFiles\program\cfr-0.141.jar C:\Users\noteless\Desktop\NewsController.class --outputdir C:\Users\noteless\Desktop\xxx
2. 跪求JAR反編譯的最容易最強的工具
目前,市面上流行的Java反編譯工具有近三十種,其中三款尤為突出。首先是廣為人知的JAD,這是一種基於命令行的工具,盡管沒有圖形界面,但憑借其強大的功能和靈活性贏得了眾多用戶的青睞。JAD使用Microsoft Visual C++開發,處理復雜的Java編譯文件速度極快,其眾多參數使反編譯的代碼更為優化和易讀。常用的參數包括:-d指定輸出文件的目錄,-s設置輸出文件擴展名(通常設為.java),-8將Unicode字元轉換為ANSI字元串。反編譯指令示例:Jad –d c:\javasource –s .java -8 javatest.class,此指令將javatest.class反編譯為javatest.java,並保存在c:\javasource目錄。
其次是開源項目JODE,因其卓越的反編譯效果而在眾多反編譯器中脫穎而出。JODE能夠處理常見的加密手段,如混淆技術,反編譯效果尤為出色。JODE本身是一個純Java開發的可運行JAR文件,雙擊即可運行。反編譯時,用戶需在Options菜單中的Set Classpath設置類路徑,單獨的類文件輸入其上一級目錄,選擇Reload Classpath即可。新加入的類包或類名會在左側窗口顯示,雙擊類名即可查看反編譯後的源代碼。
最後是獨特的DAVA,作為Soot的一部分,DAVA採取了流程優化的方式進行反編譯,對改變流程類的加密方法有獨特效果。Soot需要嚴格的環境變數配置,通常要設置CLASSPATH:Set CLASSPATH=%CLASSPATH%;c:\sootdir\sootclasses-2.1.0.jar;.;,其中c:\sootdir\是下載的soot類包放置的路徑。DAVA作為Soot的一個參數,使用方法為:Java soot.Main –f dava –d c:\javasource javatest。此操作與前述JAD的參數效果相同。
總體來說,這三種工具各有千秋,效果都非常出色。經測試,它們基本上都能將JDK自帶的一些常式完全反編譯,且無需任何修改即可成功編譯並正常運行。
3. 最好的java反編譯工具是哪個
最佳的Java反編譯工具是jadx,它功能強大、使用便捷,支持Windows、Linux、macOS等操作系統,可以處理.apk、.dex、.jar、.zip等格式文件。
jadx提供GUI和命令行程序,用戶根據需要選擇使用。操作簡單,直接拖拽文件即可實現反編譯。例如,需要查看jar包源碼時,只需將jar包拖入jadx即可。
jadx安裝簡單,作為開源軟體,用戶可免費下載使用。下載後解壓壓縮文件,進入bin目錄找到可執行文件。用戶也可以選擇克隆源碼,本地編譯。
jadx由Java編寫,使用Gradle構建,用戶可通過Gradle命令進行本地編譯或直接使用IDE運行。
jadx支持多種格式文件反編譯,用戶可通過File -> Open files...打開文件或直接拖拽文件進入jadx界面。
jadx內置強大搜索功能,支持多種匹配模式,用戶可通過Navigation打開搜索功能,搜索類、方法、屬性、代碼、文件、注釋。
用戶還可以查看類、變數或方法的使用情況,通過右鍵選擇Find Usage功能,jadx將快速找出使用這些元素的代碼位置。
jadx支持自定義注釋,通過右鍵選擇Comment功能,用戶可以將注釋添加到源代碼中。
在項目中進行混淆加密後,反混淆功能可以幫助恢復混淆後的代碼可讀性,用戶可通過Tools -> Deobfuscation功能開啟反混淆。
jadx是一個強大的Java反編譯工具,以其功能強大、使用方便、支持多種格式文件以及強大的搜索和反混淆功能,成為了Java開發者的首選工具。