декомпилиране на DEX в изходния код на Java

Как може да се декомпилират файловете DEX (VM байткод) на Android в съответния изходен код на Java?

Решение

Лесно е

Вземете тези инструменти:

  1. dex2jar за превеждане на dex файлове в jar файлове

  2. jd-gui за преглед на java файловете в jar

Изходният код е доста четим, тъй като dex2jar прави някои оптимизации.

Процедура:

Ето и процедурата за декомпилиране:

Стъпка 1:

Конвертиране на classes.dex в test_apk-debug.apk в test_apk-debug_dex2jar.jar

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk
d2j-dex2jar.sh -f -o output_jar.jar dex_to_decompile.dex

Забележка: В машините с Windows всички скриптове .sh се заменят със скриптове .bat.

документация на dex2jar

Стъпка 2:

Отваряне на jar в JD-GUI

Коментари (11)

Всъщност бих препоръчал да отидете тук: https://github.com/JesusFreke/smali

Той предоставя BAKSMALI, който е най-прекрасният инструмент за обратно инженерство за DEX файлове. Направен е от JesusFreke, човекът, който създаде прочутите ROM-и за Android.

Коментари (4)

С помощта на Dedexer можете да разглобите файла .dex в Dalvik байткод (.ddx).

Доколкото ми е известно, декомпилирането към Java не е възможно.
Можете да прочетете за dalvik bytecode тук.

Коментари (2)