Отримати вихідний код з файлу .apk? [зачинено]


21

Маючи файл .apk, чи можна отримати його вихідний код?


7
Перед цим ви перевіряли, чи пакет є відкритим кодом?
ott--

.Apk - це просто .zip файл. Але, на жаль, будь-яка збірка додатків для "випуску", ймовірно, буде захищена ProGuard .
Даніель Лопес

@MatthewRead Оп запитує, чи міг би він отримати код з api, і я відповів, як називається це явище та способи як мінімум запобігти тому, щоб зробити подібний додаток. Він не каже, як не допустити отримання коду. Так, так, це відповідає на питання.
Людина

Відповіді:


15

Навіть якщо ProGuard був використаний, ви все одно можете отримати цікаву інформацію. Ось питання StackOverflow із детальним поясненням: Android: Отримання вихідного коду з файлу APK . Відео YouTube з докладним посібником . І запис у блозі про це: Як отримати вихідний код з файлу Android APK .


11

Якщо вам пощастить, і ваш .apkфайл не був захищений Proguard або аналогом, ви можете скористатися інструментом APK . Це інструмент для зворотного проектування сторонніх, закритих, бінарних додатків для Android.


Apktool створює лише Smali-код, а не код Java - це велика різниця.
Роберт

2

З однієї із вікі спільноти Парнкул Гарг в SO :


Порядок розшифровки файлів .apk, покроковий метод:

Крок 1:

  1. Створіть нову папку та скопіюйте файл .apk, який потрібно декодувати.

  2. Тепер перейменуйте розширення цього .apk-файлу в .zip (наприклад, перейменуйте з filename.apk в filename.zip) і збережіть його. Тепер ви можете отримати доступ до файлів class.dex і т. Д. На цьому етапі ви можете бачити малюнки, але не XML і Java файли, тому продовжуйте

Крок 2:

  1. Тепер витягніть цей .zip-файл у тій самій папці (або НОВА папка).

  2. Завантажте dex2jar і дістаньте його до тієї ж папки (або НОВОЇ папки).

  3. Перемістіть файл class.dex у папку dex2jar.

  4. Тепер відкрийте командний рядок та змініть каталог у цю папку (або НОВУ папку). Потім напишіть d2j-dex2jar classes.dexі натисніть Enter. Тепер у вас є файл class.dex.dex2jar в тій же папці.

  5. Завантажте Java-декомпілятор , двічі клацніть на jd-gui, натисніть на відкритий файл та відкрийте файл Class.dex.dex2jar з цієї папки: тепер ви отримуєте файли класів.

  6. Збережіть усі ці файли класу (У jd-gui натисніть Файл -> Зберегти всі джерела) за назвою src. На цьому етапі ви отримуєте джерело java, але файли .xml все ще не читаються, тому продовжуйте.

Крок 3:

Тепер відкрийте ще одну нову папку

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

  2. Завантажте останню версію вікна встановлення apktool AND apktool (обидві можна завантажити з того самого посилання) і помістіть їх у ту саму папку

  3. Завантажте Framework-res.apk і покладіть його в ту саму папку (Не всім apk -файлам потрібен цей файл, але це не зашкодить)

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

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

  6. apktool d myApp.apk (де myApp.apk позначає ім'я файлу, яке потрібно декодувати)

тепер ви отримуєте папку файлів у цій папці і можете легко читати файли xml apk.

Крок 4:

Це не будь-який крок, просто скопіюйте вміст обох папок (в даному випадку і нову папку) в одну

і насолоджуйтесь вихідним кодом ...

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