apk檔案反編譯d2j-dex2jar.bat/dex2jar.bat遇到的問題
阿新 • • 發佈:2019-02-14
使用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