JesusFreke/smali

ArrayIndexOutOfBoundsException when using baksmali to deodex a big odex file (odex version 036)

gamecss opened this issue · 2 comments

apk and odex file
framework folder (Android kitkat)
When I trying to deodex odex file, it throw error:

$ java -jar baksmali-2.5.2.jar de -d framework XunAppStore_v2.odex
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 2783984 out of bounds for length 2621400
        at org.jf.dexlib2.dexbacked.DexBuffer.readSmallUint(DexBuffer.java:54)
        at org.jf.dexlib2.dexbacked.DexBackedDexFile.getMapItems(DexBackedDexFile.java:266)
        at org.jf.dexlib2.dexbacked.DexBackedDexFile.getMapItemForSection(DexBackedDexFile.java:283)
        at org.jf.dexlib2.dexbacked.DexBackedDexFile.<init>(DexBackedDexFile.java:103)
        at org.jf.dexlib2.dexbacked.DexBackedDexFile.<init>(DexBackedDexFile.java:184)
        at org.jf.dexlib2.dexbacked.DexBackedOdexFile.<init>(DexBackedOdexFile.java:53)
        at org.jf.dexlib2.dexbacked.DexBackedOdexFile.fromInputStream(DexBackedOdexFile.java:98)
        at org.jf.dexlib2.DexFileFactory.loadDexContainer(DexFileFactory.java:255)
        at org.jf.baksmali.DexInputCommand.loadDexFile(DexInputCommand.java:153)
        at org.jf.baksmali.DisassembleCommand.run(DisassembleCommand.java:162)
        at org.jf.baksmali.Main.main(Main.java:102)

Tried baksmali v2.1.1, v2.3, v2.5.2, all the same.

Is need split it to multi dex file?

It isn't a bug in smali, it just caused by incomplete odex file.