1. 程式人生 > >apk檔案反編譯d2j-dex2jar.bat/dex2jar.bat遇到的問題

apk檔案反編譯d2j-dex2jar.bat/dex2jar.bat遇到的問題

使用apk反編譯軟體dex2jar與jdgui時,出現了以下兩種情況:

I:\Android_decode\APK_decode\dex2jar>dex2jar.bat classes.dex
	version:0.0.7.8-SNAPSHOT
6 [main] INFO pxb.android.dex2jar.v3.Main - dex2jar classes.dex -> classes.dex.dex2jar.jar 4432 [main] ERROR pxb.android.dex2jar.reader.DexFileReader - Fail on class
java.lang.RuntimeException: Error in method:[Ljcifs/util/DES;.deskey([BZ[I)V]
        at pxb.android.dex2jar.reader.DexFileReader.visitMethod(DexFileReader.java:499)
        at pxb.android.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:302)
        at pxb.android.dex2jar.reader.DexFileReader.accept(DexFileReader.java:177)
        at pxb.android.dex2jar.v3.Main.doData(Main.java:78)
        at pxb.android.dex2jar.v3.Main.doFile(Main.java:114)
        at pxb.android.dex2jar.v3.Main.main(Main.java:64)
Caused by: java.lang.RuntimeException: Not support Opcode:[0x00d9]=RSUB_INT_LIT8 yet!
        at pxb.android.dex2jar.v3.V3CodeAdapter.visitInInsn(V3CodeAdapter.java:824)
        at pxb.android.dex2jar.reader.DexOpcodeAdapter.visit(DexOpcodeAdapter.java:321)
        at pxb.android.dex2jar.reader.DexCodeReader.accept(DexCodeReader.java:314)
        at pxb.android.dex2jar.reader.DexFileReader.visitMethod(DexFileReader.java:497)
        ... 5 more
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Error in method:[Ljcifs/util/DES;.deskey([BZ[I)V]

exception in thread main java.lang.outofMemoryError:java heap space


之前還用的好好的,可以反編譯,還反饋了我當前使用的dex2jar的版本資訊,查了許久也沒有解決辦法,下面的博文提及可能是Java版本太高而當前使用的dex2jar版本太低所致,我的Java是1.8版本(前段時間的確升級過),而dex2jar是0.07.8,所以從官網下載了最新版dex2jar-2.0,後面會提供下載連結。

參考博文:http://blog.csdn.net/langrenyijiu/article/details/9048147

反編譯批處理檔案有了改動,不過大同小異

  • 將classes.dex檔案複製到dex2jar-2.0資料夾下;
  • cmd找到dex2jar-2.0檔案路徑下;
  • 輸入d2j-jar2dex.bat classes.dex

視窗會出現dex2jar classes.dex -> .\classes-dex2jar.jar,相應檔案會出現該檔案,到這裡就可以用jdgui開啟此檔案學習別人的程式碼了。

反編譯教程可參考:http://blog.csdn.net/yueyueniao96/article/details/7540224

更新於2017年7月10日

1)dex2jar的版本太低——無法反編譯Android Studio打包的apk檔案,目前我使用的是dex2jar-0.0.9.15,

下載連結

2)使用d2j-dex2jar.bat檔案,如果路徑下存在classes-dex2jar.jar會出現下述提醒“classes-dex2jar.jar exists, use --force to overwrite”


解決辦法:

d2j-dex2jar.bat -f classes.dex