jar反編譯命令
由於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自帶的一些常式完全反編譯,然後不加任何修改可再編譯成功,並能正常運行!
2. 怎麼反編譯.jar文件
網路cavaj或者jad,cavaj是單獨的exe程序,能把class文件反編譯。jad是eclipse插件,需要eclipse開發環境
3. jar包如何反編譯
使用jd-gui工具打開原始的Jar包,選擇File-->Save All Sources,會生成一個zip壓縮包。解壓這個壓縮包,就可以得到java源碼文件
4. 如何利用dex2jar反編譯APK
步驟1、下載dex2jar和JD-GUI,在參考資料中添加了這兩個工具的網路網盤下載地址供讀者下載使用(筆者親測)
步驟2、找到我們准備測試用的apk,並將 後綴.apk改為.zip
步驟3、棗早將test.zip解壓,並查看目錄,找到classes.dex
步驟4、並將這個文件拷至dex2jar工具存放目錄下
步驟5、打開控制台,使用cd指令進入到dex2jar工具存放的目錄下,
步驟6、進入到dex2jar目錄下後,輸入「dex2jar.bat classes.dex」指令運行薯岩皮
步驟7、執行完畢,查看dex2jar目錄,會發數差現生成了classes.dex.dex2jar.jar文件
步驟8、上一步中生成的classes.dex.dex2jar.jar文件,可以通過JD-GUI工具直接打開查看jar文件中的代碼
5. myeclipse 怎麼反編譯jar
1.下載MyEclipse反編譯Class文件的工具
2.工具的安裝
下載後上面的工具之後,解壓出來,我們可以看到有兩個文件:jad.exe、net.sf.jadclipse_3.3.0.jar 。
第一步:我們將jad.exe文件放到JDK的bin目錄下
第二步:將 net.sf.jadclipse_3.3.0.jar 拷貝到 MyEclipse安裝目錄下的plugins目錄下面D:
第三步:在D:-8.6dropins創建一個eclipse文件夾.
第四步:在創建好的eclipse文件夾下,分別創建featues、plugins兩個文件夾.
第六步:將net.sf.jadclipse_3.3.0.jar 文件分別拷貝到創建好的featues、plugins兩個文件夾裡面.
第七步:重新啟動MyEclipse,在Windows——>Perference——>Java下面應該會多出一個JadClipse目錄. 如果沒有出現的話,多試幾次就OK了,我當時也是這樣.
第八步:點擊JadClipse,在右邊的窗口中配置JadClipse. 設置path to decompiler為jad.exe的全路徑,如:C:jdkinjad.exe,在Directory for temporary files中指定l臨時文件路徑,如 :D:-8.6 esult ,其中result是新建一個文件夾. 同時需要選中 User Eclipse code formatter ,這樣編譯出來的Java 代碼會和Class文件的格式一樣.
為了避免編譯後的中文亂碼問題,我們需要配置Misc
第九步:安裝完成之後,雙擊Class文件,MyEclipse就自動反編譯了.如果沒有出現想要的結果,需要檢查一下「*.class」默認關聯的編輯器為「JadClipse Class File Viewer「
關聯之後,就可以自動的反編譯啦!
6. 如何使用apktool.jar進行反編譯
命令:
java -jar apktool.jar d android.jar c:\android
其中:android.jar 要進行反編譯的jar, c:\anroid 生成到這個路徑下
7. 怎樣jar包直接反編譯成java文件
使用現有的反編譯工具或者自己寫一個,jar包實際上是class文件打包的,class文件是二進制文件,使用流將class文件讀入,然後轉為字元再寫入到文件中就完成反編譯了。不過經過混淆過的jar包好像不能反編譯。
8. 有哪些防止反編譯 Java 類庫 jar 文件的辦法
反編譯工具(如手做jdk帶的javap、或jad)將TestSimplePlus反賀薯友編譯成Java Byte Cod,命令如下:jad -o -a -s d.java TestSimplePlus.classjavap -c DocFooter >禪槐 F://test.txt再上傳個反編譯的神器(批量編譯)
9. 如何將jar包反編譯成項目
第一步 用反編譯工具將jar 反編譯
第二步 將反編譯後的項目,保存成zip包
第三步 解壓zip包,並將項目導入到項目中
用解壓軟體,這個很方便就不詳細說了
第四步 將文件導入到項目中(注意因為是文件,不是完整的項目,所以先創建一個空的項目,用這種方式去導入文件)
第五步選擇自己路徑下的文件點擊Resource Filters 即可