Я пытаюсь использовать dex2jar для чтения файла dex (Android APK) в обычном Java-приложении.
У меня есть файловый объект для 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, но это не показано в примере раздела «Хочу прочитать файл dex с помощью dex2jar» в вики (ссылка выше).
Как мне успешно прочитать APK? Что я пропустил?