java源代碼反編譯專家
目前最好的反編譯工具,是小穎JAVA源代碼反編譯超級引摯,Google一下就有下的,很好用
㈡ JAVA應用怎麼破解
一.破解工具預備
要破解JAVA軟體,必須要反編譯用JAVA編寫的類文件。由於網上大蝦們的支持,許多反編譯軟體被研製出來
其中,我經常使用的是:
1. cavaj Java Decompile 1.11
2.Java源代碼反編譯專家(該軟體支持目錄編譯)
3.JAD
這三個軟體各有優缺點:前二個軟體是GUI界面,使用起來很方便。尤其是"Java源代碼反編譯專家",支持
目錄編譯,用起來很得心應手;第三個軟體JAD功能最強,由於是字元界面,但是相對初學者比較難一點。 二.破解步驟
1.首先分析批處理文件,找到第一個調用的CLASS。
在分析iavaZIP20軟體的iavaZIP2.bat,我把最重要的一句COPY到下行:
com.sfs.app.iavazip20.iavaZIP20 %1 %2 %3 %4 %5 %6 %7 %8 %9
可以知道,在com\sfs\app\iavazip20的目錄下的iavaZIP20.CLASS就是被調用的第一個CLASS. 2.反編譯第一個CLASS,分析MAIN方法,尋找版本控制的代碼段
我用「cavaj Java Decompile 1.11」編譯iavaZIP20.class文件,很快就可以得到該軟體的JAVA代碼,
main方法的全部代碼如下:
public static void main(String args[])
{
iavaZIP20 iavazip20 = new iavaZIP20(args);
if(iavazip20.isEXPired())
{
System.out.println("iavaZIP20 trial time has expired. Please purchase and enter licence key.");
for(_cls13 _lcls13 = new _cls13(iavazip20, true); _lcls13.expirationFrame.isShowing();)
{
try
{
Thread.sleep(1000L);
}
catch(InterruptedException _ex) { }
} if(_cls66.isSerialRegcode(((_cls1) (iavazip20)).res.getProperty("user.id")))
{
iavazip20._fld6.remove(iavazip20._fld4);
iavazip20._fld6.add("Right", iavazip20._fld4 = iavazip20._fld0 = new _cls13(iavazip20));
iavazip20._fld6.validate();
} else
{
iavazip20.dispose();
System.exit(0);
}
}
iavazip20.show();
} 很明顯,iavazip20.isExpired()就是版本控制的代碼。
3.分析版本控制的語句,找到破解的方法
由於isExpired()的方法的代碼如下:
public boolean isExpired()
{
return !_cls66.isSerialRegcode(super.res.getProperty("user.id", "0")) && Long.parseLong(super.res.getProperty("magic")) magicTime < System.currentTimeMillis();
} 看了com\sfs\app\iavazip20的所有文件,由於該文件夾中的文件都是從1-66之間的整數問文件名,「class」為擴展名的類文件,分析「!_cls66.isSerialRegcode」的方法是破解的要害類應該就是66.class文件
㈢ 如何反編譯Apk得到Java源代碼
1.下載反編譯工具
需要下載四個工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot
dex2jar:將apk中的classes.dex轉化成Jar文件。
JD-GUI:反編譯工具,可以直接查看Jar包的源代碼。
apktool:反編譯工具,通過反編譯APK中XML文件,直接可以查看。
apktool-install-windows-r05-ibot:輔助windows批處理工具。
2.解壓縮APK包
apk文件也是一種常見的zip,常用的壓縮軟體就可輕松地解壓apk文件。用壓縮軟體將apk文件中的文件解壓到一個文件夾中,得到APK中的資源包括XML文件和classes.dex文件,classes.dex就是java文件編譯再通過dx工具打包而成的。
3.反編譯dex文件
解壓apk文件後,你會發現res目錄的圖片沒有加密,但java源碼編譯成了一個classes.dex文件,無法用普通的反編譯class文件的方法來處理,dex2jar可以將dex文件轉換成普通的jar包。
解壓下載的dex2jar,把解壓後的文件夾放到系統盤跟目錄中並把這個目錄加到系統path變數中,就可以直接用:dex2jar.bat或dex2jar.sh轉換dex文件了。
DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex文件所在的路徑)。
將在同目錄得到普通jar包:classes_dex2jar.jar,就可以用處理普通jar包的方法來反編譯這個jar包得到原文件。
4.反編譯jar包
得到jar包後,下載自已喜歡的反編譯工具,推薦使用JD-GUI,有比較簡單的圖形界面,可以反編譯單個class文件,也可以反編譯jar包,比較方便。
打開壓縮文件JD-GUI,運行jd-gui.exe,打開上面生成的jar包,即可看到源代碼了。
5.反編譯xml文件
打開解壓的res\layout目錄,有很多xml文件,如果你想看下作者是如何設計界面的,你會很失望,因為你看到的是一大堆亂碼!這個時候我們需要用到的是apktool。
具體操作方法:將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個文件夾下,這個文件夾有三個文件:aapt.exe,apktool.bat,apktool.jar。把這個文件夾也放到系統盤的根目錄中並把這個目錄加到path變數中。以HelloWord.apk為例:
在DOS命令行中輸入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夾,此文件夾中的xml文件就是編譯好的可以正常查看的文件。
這樣就得到了可以得到編譯的源碼和XML資源。
注意:文件的路徑中最好不要出現中文!
㈣ 怎麼用eclipse Jode Decompiler插件來反編譯JAR
安裝方法:
1、點擊Eclipse的Help菜單 --> Software Updates --> Find and install...;
2、然後選擇:Search for new features to install,在彈出的對話框中點擊「New Remote Site...」菜單;
3、填入:
Name: Jode Decomopiler
4、點擊「Finish」;
5、安裝好後可以看到Window => Preferences... => Java => Jode Decompiler選項
卡;
6、配置:Window => Preferences... => General => Editors => File Associations找到"*.class"在"Associated editors"裡面可以看到"Jode class file viewer"選中它再單擊Default按鈕;
7、在Eclipse中展開jar文件,雙擊class文件即可看到反編譯之後的源代碼。
㈤ 鎬ワ紒楂樻墜璇瘋繘錛.class鏂囦歡鏈夋病鏈夐槄璇葷殑宸ュ叿鍙浠ヨ誨彇鍏朵腑鐨勫唴瀹逛俊鎮錛
浣犱笅涓猚lass鍙嶇紪璇戣蔣浠
姣斿傦細XJad錛圝ava婧愪唬鐮佸弽緙栬瘧宸ュ叿錛 V2.2
XJad鏄鍩轟簬Jad鏍稿績鐨凧ava婧愮▼搴忓弽緙栬瘧杞浠訛紝鍐呯疆Jad1.5.8e2銆
XJad鍙澶勭悊澶氫釜*.class鏂囦歡錛屽彲浠ュ勭悊鏂囦歡澶瑰唴鐨勬墍鏈夋枃浠訛紝鐢氳嚦鍙浠ュ勭悊*.jar鏂囦歡銆
XJad甯︽湁澶氶〉闈㈡枃鏈緙栬緫鍣錛屽弽緙栬瘧瀹屾垚鍚庡彲浠ョ洿鎺ョ紪杈戞煡鐪嬶紝緙栬緫鍣ㄦ敮鎸乯ava璇娉曠殑楂樹寒鏄劇ず鍔熻兘銆
XJad鏄涓涓綰緇胯壊杞浠訛紝涓轟嬌鐢ㄦ柟渚匡紝鍙浠ュ湪閫夐」涓璁劇疆闆嗘垚鍒拌祫婧愮$悊鍣ㄤ腑錛岃繖鏍峰湪*.class銆*.java銆*.jar鏂囦歡鍜岀洰褰曚笂闅忔椂鐐瑰嚮鍙抽敭閮藉彲鐩存帴榪涜屾搷浣溿
XJad榪樺甫鏈夊煎嚭褰撳墠緙栬緫鍣ㄤ腑鐨勪唬鐮佷負HTML鏂囦歡鐨勫姛鑳斤紝HTML鏂囦歡淇濇寔浠g爜楂樹寒鏄劇ず鐨勬牱寮忛庢牸銆
浣跨敤璇存槑
===========
1銆佸弽緙栬瘧class鏂囦歡錛氭墦寮涓涓鎴栬呭氫釜*.class鏂囦歡錛孹Jad鍙嶇紪璇戝悗錛岄噸鍛藉悕涓*.java鏂囦歡錛屼繚瀛樿嚦褰撳墠鏂囦歡澶癸紝騫跺湪緙栬緫鍣ㄤ腑鎵撳紑鏌ョ湅錛
2銆佸弽緙栬瘧鏂囦歡澶癸細鍦ㄨ蔣浠朵腑閫夋嫨鍙嶇紪璇戞枃浠跺す鎴栧彸閿鐐瑰嚮鏂囦歡澶歸夋嫨鍙嶇紪璇戱紝XJad灝嗚ユ枃浠跺す涓嬫墍鏈*.class鏂囦歡榪涜屽弽緙栬瘧錛屽苟淇濆瓨鑷寵ユ枃浠跺す涓嬶紝渚濇嵁鍖呰礬寰勪俊鎮鐢熸垚鏂囦歡澶硅礬寰勶紝濡俢om.spring.framework.*錛屽皢寤虹珛com\\spring\\framework鐨勬枃浠跺す緇撴瀯錛
3銆佸弽緙栬瘧jar鏂囦歡錛氭墦寮涓涓*.jar鏂囦歡錛孹Jad灝嗚Jar鏂囦歡涓鐨勬墍鏈*.class鏂囦歡瑙e帇緙╁埌涓存椂鐩褰曞苟榪涜屽弽緙栬瘧錛屽苟灝嗘簮鏂囦歡甯﹀寘璺寰勪俊鎮淇濆瓨鑷沖綋鍓嶆枃浠跺す涓嬪悕縐頒負鈥渵鈥 + *.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反編譯軟體
由於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自帶的一些常式完全反編譯,然後不加任何修改可再編譯成功,並能正常運行!