Обратно инженерство от APK файл към проект

Случайно изтрих проекта си от Eclipse и ми остана само файлът APK, който прехвърлих на телефона си. Има ли начин да обърна процеса на експортиране на приложение в .apk файл, за да мога да си върна проекта?

Решение

Има два полезни инструмента, които генерират Java код (груб, но достатъчно добър) от непознат APK файл.

  1. Изтеглете инструмента dex2jar от dex2jar.

  2. Използвайте инструмента, за да преобразувате APK файла в JAR:

     $ d2j-dex2jar.bat demo.apk
     dex2jar demo.apk -> ./demo-dex2jar.jar
  3. След като генерирате файла JAR, използвайте JD-GUI, за да отворите файла JAR. Ще видите Java файловете.

Изходът ще бъде подобен на:

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

Не съвсем. Съществуват редица комплекти за дезасемблиране/декомпилиране на dex като smali или dex2jar, които генерират получетим изход (в случая с dex2jar можете да получите java код чрез използване на нещо като JD-GUI, но процесът не е перфектен и е много малко вероятно да успеете да пресъздадете на 100% изходния си код. Въпреки това, той може да ви даде възможност да започнете да възстановявате дървото на изходните кодове.

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

Да, можете да възстановите проекта си. Просто преименувайте файла yourproject.apk на yourproject.zip и ще получите всички файлове в този ZIP файл. Променяме разширението на файла от .apk на .zip. От този ZIP файл извлечете файла classes.dex и го декомпилирайте по следния начин.

Първо, имате нужда от инструмент за извличане на всички (компилирани) класове на DEX в JAR. Има един инструмент, наречен dex2jar, който е направен от китайски студент.

След това можете да използвате JD-GUI, за да декомпилирате класовете в JAR до изходен код. Полученият изходен код би трябвало да е доста четлив, тъй като dex2jar прилага някои оптимизации.

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