Зворотна інженерія з файлу APK до проекту


244

Я випадково видалив свій проект із Eclipse , і все, що мені залишилося, - це файл APK, який я переніс на свій телефон. Чи є спосіб повернути процес експорту програми до файлу .apk, щоб я міг повернути свій проект назад?



2
ви знаєте, що затемнення має власну історію версій?
eis


4
якщо ви пишете щось важливе для вас, вам слід використовувати VCS. У Bitbucket є безкоштовні приватні сховища.
lxknvlk

Відповіді:


287

Є два корисні інструменти, які генерують код 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.

Вихід буде подібний до:

JD GUI


6
як отримати файли ресурсів
srini

26
cmd застаріло, використовуйте d2j-dex2jarзамість цього (v0.0.9.15).
Фредрік Гаус

1
@sri просто перейменуйте apk-файл, щоб завантажити його та витягнути, у вас будуть файли ресурсів у resпапці
Hoang Huynh

8
@HoangHuynh у вас буде resпапка з нечитабельними файлами xml
S.Thiongane

6
В Mac разі ви не можете використовувати dex2jar: permission deniedто це зробити $sudo chmod +x d2j-dex2jar.sh
min2

81

Перш за все, я рекомендую thisвідео, можливо, це очистить усі ваші сумніви

Якщо ні, будь ласка, перегляньте це

Procedure for decoding .apk files, step-by-step method:

Step 1:

Створіть нову папку і покладіть у неї файл .apk (який ви хочете розшифрувати). Тепер перейменуйте розширення цього .apkфайлу в .zip(наприклад: перейменуйте з filename.apk у filename.zip) та збережіть його.

Якщо виникають проблеми при перетворенні на .zip, будь ласка, посилайтесь link

Після отримання .zip тепер ви отримуєте файли class.dex і т. Д. На цьому етапі ви можете бачити драйвові, але не XML і Java файли, тому продовжуйте. Якщо ви не бачите розширень, перегляньте конфігурацію

Step 2:

Тепер витягніть цей zip apk-файл у тій же папці. Тепер завантажте з цього dex2jarlink

і витягнути його в ту саму папку. Тепер відкрийте командний рядок та змініть каталог у цю папку.

Потім напишіть dex2jar classes.dexі натисніть Enter. Тепер ви отримуєте classes.dex.dex2jarфайл у тій же папці.

Потім завантажте Java-декомпілятор

А тепер двічі клацніть на jd-gui і натисніть на відкритий файл. Потім відкрийте classes.dex.dex2jarфайл із цієї папки. Тепер ви отримуєте файли класу і зберігаєте всі ці файли класів (натисніть на файл, потім натисніть "зберегти всі джерела" в jd-gui) за ім'ям src. Витягніть цей поштовий файл(classes_dex2jar.src.zip) і ви отримаєте всі файли Java програми.

На цьому етапі ви отримуєте джерело Java, але файли xml все ще не читаються, тому продовжуйте.

Step 3:

Тепер відкрийте ще одну нову папку і помістіть ці файли

  1. помістіть .apk файл, який потрібно розшифрувати

  2. завантажити Apktool для windows v1.xAndApktool

встановити вікно за допомогою google і помістити в ту ж папку

  1. скачайте файл Framework-res.apk за допомогою google та покладіть у ту саму папку (Не всім apk-файлам потрібен файл Framework-res.apk)

  2. Відкрийте вікно команд

  3. Перейдіть до кореневого каталогу APKtool і введіть таку команду: apktool if framework-res.apk.

Наведена вище команда повинна призвести до Framework installed ... .

  1. apktool d "appName" .apk ("appName" позначає додаток, який ви хочете розшифрувати) тепер ви отримуєте папку файлів у цій папці, і тепер ви також можете легко читати файли xml.

Step 4: Нарешті ми отримали res/код, а також java-проект, який є нашою метою на початку.

P.S. Якщо ви не в змозі отримати папку res, виконавши вищезазначені дії, будь ласка, встановіть нову apktool

  • Чи встановлена ​​Java 1.7? Встановіть Apktool 2.x
  • Установлена ​​Java 1.6 або новіша версія? Встановіть Apktool 1.x

Enjoy and happy coding


дійсно корисно. Просто щось, що ви не згадали: apktool.jarце не в одному пакеті, я дістав його з колишнього пакета і вставив його в той же самий dir apktool.
S.Thiongane

1
Я повернув інженеру код, але чому саме ім'я класу, змінна така, як aa, bc, і т. д., а також багато помилок
user2934930

1
не в змозі зробити це в cmd
Meghal Agrawal

будь-який інший спосіб зробити це?
Meghal Agrawal

2
@ user2934930 Це означає, що код був придушений за допомогою ProGuard.
каскал

58

Немає програмного забезпечення & Не надто багато кроків ..

Просто завантажте APK і отримайте всі ресурси з цього веб-сайту.

https://www.apkdecompilers.com/

Цей веб-сайт декомпілює код, вбудований у файли APK, та вилучить усі інші активи у файлі.

Примітка: я декомпілюю свій файл APK і отримую код протягом однієї мініатюри з цього веб-сайту

Оновлення 1 :

Я знайшов інший веб-сайт декомпілятора,

http://www.javadecompilers.com/apk/ - Не працює постійно з проханням заблокувати спливаюче вікно

Оновлення 2:

Я знайшов додаток декомпілятора apk в магазині ігор,

https://play.google.com/store/apps/details?id=com.njlabs.showjava

Ми можемо декомпілювати apk-файли в нашому телефоні Android. а також ми можемо переглядати файли java & xml у цій програмі

Оновлення 3:

Ми можемо використовувати інший варіант Аналіз функції APK від версії Android Studio 2.2

Збірка -> Аналіз APK -> Виберіть APK -> це дасть результати

введіть тут опис зображення


3
в останньому методі ми не можемо відкрити клас java, показує лише назви методів
Choletski

@Choletski Ви пробуєте ShowJava? якщо не спробуй і оновити мене
Ранджіт Кумар

@RanjithKumar обмежений розміром APK на 50 Мб .. У мене є 85 Мб APK для декомпіляції.
Раві Шарма


1
Як запустити цей декомпільований проект у студії android? хтось, будь ласка, напише про це.
Mayur kukadiya


4

Не зовсім. Існує ряд наборів декомбіляторів / декомпіляторів Dex , таких як smali або dex2jar, які генеруватимуть результати, що читаються на людині (у випадку з dex2jar, ви можете отримати код java, використовуючи щось на зразок JD-GUI, але процес є не ідеально, і малоймовірно, що ви зможете на 100% відтворити свій вихідний код, однак це може дати вам місце для початку відновлення вашого вихідного дерева.


@MAC: Йому потрібно джерело, а не файл APK !!
Шашанк Кадне

2
@ShashankKadne, можливо, я не отримую назад своїх слів
MAC

3

Так, ви можете отримати свій проект назад. Просто перейменуйте yourproject.apkфайл у yourproject.zip, і ви отримаєте всі файли всередині цього ZIP-файлу. Ми змінюємо розширення файлу з .apk на .zip. З цього ZIP-файлу витягнітьclasses.dex файл і декомпілюйте його наступним чином.

По-перше, вам потрібен інструмент для витягування всіх (складених) класів на DEX до JAR. Є одна, що називається dex2jar , який виготовляє китайський студент.

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


3

Для платформи Android можна спробувати ShowJava , доступний у Play Store.

Ви можете проконсультувати згенерований код через інтерфейс програми, а створені файли Java та файли зберігаються у ShowJavaпапці /sdcard, поряд із отриманими.jar файлом від перетворення.

Додаток безкоштовний із рекламним банером у нижній частині основного виду, але є можливість придбання через додаток (3,99 $) для його видалення. Покупка через додаток не додає функціональності крім видалення рекламного банера.

Розкриття інформації: я не розробник програми, і я жодним чином не пов'язаний з ним.


Зазвичай я використовую його для ... Хороший додаток
Рахул

2

Виконайте нижче кроки, щоб зробити це, або просто скористайтеся gk apkToJava для цього процесу, він навіть подбає про встановлення необхідних інструментів для його роботи.

  • конвертувати apk-файл в zip
  • распакуйте файл
  • витягнути з нього class.dex
  • використовувати dex для jar для перетворення class.dex у файл jar
  • використовувати jadx gui, щоб відкрити файл jar як вихідний код java

2

Якщо ви шукаєте професійну альтернативу, погляньте на JEB Decompiler від PNF Software.

Існує демо-версія, яка дозволить вам декомпілювати більшість коду.


2

Нижче наведено деякі інструменти, які можна використовувати для виконання зворотної інженерії з файлу APK у вихідний код:

  1. Dex2jar
  2. Декомпілятор Java
  3. Apktool
  4. Apk Analyzer

2

В Android Studio 3.5 дуже легко, що ви можете досягти цього за хвилину. далі - крок мудрий процес.

1: Відкрийте Android Studio, натисніть кнопку вікна -> Введіть Android Studio -> натисніть на піктограму, щоб відкрити сплеск екрану андроїд студії, який буде виглядати приблизно так.

введіть тут опис зображення

2: Тут ви можете побачити опцію "Профіль або налагодити APK", натисніть на неї та виберіть файл apk та натисніть кнопку ОК.

введіть тут опис зображення

3: Це відкриє всі ваші маніфести та java-класи за хвилину, залежно від розміру apk.

введіть тут опис зображення

Це воно.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.