使用dex2jar阅读APK需要什么魔力?

时间:2018-01-16 11:10:23

标签: java android dex dex2jar

我试图在普通的Java应用中使用dex2jar来读取dex文件(Android APK)。

我有一个APK文件对象,然后只需拨打new DexFileReader(dex)

然而,这引发了以下异常" 不支持魔法":

com.googlecode.d2j.DexException: not support magic.
at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:160)
at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:258)
at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:276)

源代码显示以下块:

in = in.asReadOnlyBuffer().order(ByteOrder.BIG_ENDIAN);
int magic = in.getInt() & 0xFFFFFF00;

final int MAGIC_DEX = 0x6465780A & 0xFFFFFF00;// hex for 'dex ', ignore the 0A
final int MAGIC_ODEX = 0x6465790A & 0xFFFFFF00;// hex for 'dey ', ignore the 0A

if (magic == MAGIC_DEX) {
    ...
} else if (magic == MAGIC_ODEX) {
    ...
} else {
    throw new DexException("not support magic.");
}

我的假设是我错过了一个步骤,并且需要从APK转换为基本dex格式,但它未在示例中显示&#39;想要阅读dex文件使用dex2jar&#39;维基的一部分(上面链接)。

如何成功阅读APK?我错过了什么?

1 个答案:

答案 0 :(得分:1)

apk基本上是一个zip文件。它包含dex - 但远不止它。所以请先从那里提取dex,然后运行dex2jar。