我试图使用dex2jar来读取普通Java应用程序中的dex文件(一个Android )。
我有一个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格式,但在wiki的“希望使用dex2jar读取dex文件”一节(上面链接)中没有显示出来。
如何成功地阅读APK?我错过了什么?
发布于 2018-01-16 11:13:20
apk基本上是一个压缩文件。它包含了dex,但比它更多。因此,请先从那里提取dex,然后运行dex2jar。
https://stackoverflow.com/questions/48279864
复制相似问题