Чи є спосіб отримати вихідний код з файлу APK?


1260

Жорсткий диск на моєму ноутбуці просто вийшов з ладу, і я втратив увесь вихідний код програми, над якою працюю останні два місяці. Все, що у мене є, - це файл APK, який зберігається в моєму електронному листі з моменту надсилання його другові.

Чи є спосіб витягнути свій вихідний код із цього файлу APK?


28
FYI Існує онлайн перевірка декомпілятор тут
Edwin

11
Чи означає це, що ми можемо отримати вихідний код таких додатків на мільйон доларів, як Whatsapp чи Facebook? Це все з відкритим кодом?
Faizan

3
@Faizan Ви чули про Proguard ??
Vishwajit Palankar

1
Фразування питання містить невідповідні лайфхаки з життєвої історії, і як таке можна трактувати як рекомендаційний інструмент . Але відповідь потенційно могла бути javac -decompile, яка б відповідала настановам SO. Мені здається, що відповіді поза темою , а не питаннями.
SwiftArchitect

2
у цій статті вони пояснюють, як вони реверсують інженера Pokemon Go
anders

Відповіді:


1569

Простий спосіб: скористайтеся онлайн-інструментом http://www.javadecompilers.com/apk , завантажте apk та отримайте вихідний код.


Порядок розшифровки файлів .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(для mac-терміналу або ubuntu ./d2j-dex2jar.sh 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. Відкрийте вікно команд

  4. Тепер запустіть команду типу apktool if framework-res.apk(якщо у вас її немає, отримайте її тут ) і далі

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

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

Крок 4:

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

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


26
@prankulgarg, У пункті 5 кроку 3 я отримую таку помилку: Не вдається отримати доступ до jarfile E: \ apktojava \ testt \\ apktool.jar

55
Замість написання dex2jar class.dex в cmd спробуйте d2j-dex2jar class.dex . Оскільки dex2jar class.dex цей cmd застарілий.
Умеш

23
Для тих, хто не може знайти framework-res.apk. Завантажте його звідси
atulkhatri

12
Тим, хто не знайшов d2j-dex2jar.sh, скачайте dex2jar звідси: dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip
Reaz Murshed

14
Для людей, які застрягли на кроці 2: 4, завантажте цю версію, і вона вирішить проблему: sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip/download вона зробила для мене. @delive
siriuseteor77

126

Це альтернативний опис - про всяк випадок, якщо хтось застряг із описаним вище описом. Виконайте дії:

  1. завантажити apktool.bat(або apktoolдля Linux) та apktool_<version>.jarз http://ibotpeaches.github.io/Apktool/install/
  2. перейменуйте файл jar зверху в apktool.jarі покладіть обидва файли в одну папку

  3. відкрити вікно Dos ( cmd.exe) та змінити в цю папку; перевірте, чи встановлено середовище Java (для Linux перевіряйте також примітки щодо необхідних бібліотек)
  4. Початок: apktool decode [apk file]

    Проміжний результат : файли ресурсів,AndroidManifest.xml

  5. розпакуйте файл APK з розпаковувачем на ваш вибір

    Проміжний результат :classes.dex

  6. завантажте та витягніть dex2jar-0.0.9.15.zipз http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=
  7. перетягніть classes.dexна нього dex2jar.bat(або введіть <path_to>\dex2jar.bat classes.dexу поле DOS; для використання Linux dex2jar.sh)

    Проміжний результат :classes_dex2jar.jar

  8. розпакуйте classes_dex2jar.jar(можливо, необов’язково залежно від використовуваного декомпілятора)
  9. декомпілювати файли класу (наприклад, з JD-GUI або DJ Decompiler )

    Результат : вихідний код

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


6
Я також можу додати, що для цього маршруту APKTool-> dex2jar-> JD-GUI є сучасна альтернатива! Просто спробуйте декомпілятор APK та DEX з відкритим кодом під назвою Jadx: sourceforge.net/projects/jadx/files Тут також є онлайн-версія: javadecompilers.com/apk
Andrew

1
Дозволяється (читати: законний) декомпілювати будь-який файл APK. Дивіться наступне питання: stackoverflow.com/questions/9674557 / ...
Rakete1111

1
Чому ці apktoolповертають smaliфайли? Як отримати javaфайл?
rminaj

108

Хоча ви зможете декомпілювати APKфайл, ви, швидше за все, потрапили на одну велику проблему:

повернути код, який ви написали, не збирається. Замість цього повертається все, що компілятор вкладений, змінним, що задаються випадковими іменами, а також функціями, що задаються випадковими іменами. Щоб спробувати декомпілювати та відновити його у код, може знадобитися значно більше часу, ніж це потрібно буде починати заново.

На жаль, подібні речі вбили багато проектів.
Надалі я настійно рекомендую вивчити систему контролю версій, наприклад CVS , SVN та git тощо.

і як створити резервну копію.


19
Служба на зразок Dropbox також допоможе.
Джеремі Логан

1
і завжди є спосіб записати компакт-диски
JerryGoyal

52

У Play Store також є нова програма, за допомогою якої можна декомпілювати apk (також системні програми) та переглядати вихідний код прямо на вашому смартфоні. Він зберігає файли на вашій SD-картці, щоб ви могли їх переглядати і на своєму комп’ютері. Для цього не потрібен корінь або щось інше.

Просто встановіть і отримайте задоволення. Я думаю, що це найпростіший спосіб декомпілювати додаток.


1
Цей найпростіший.
Мідхун Віджаякумар

@MidhunVijayakumar Ви могли б перейти на apk для перетворення вихідного коду, використовуючи це?
Sajeev

28

apktool - найкраще, що можна спробувати. Я зберегла трохи xml за допомогою нього, але, чесно кажучи, не знаю, як це буде працювати з кодом .java.

Я рекомендую вам мати сховище коду, навіть якщо ваш єдиний кодер. Я використовую Locker Project для власних проектів. Це дає вам безкоштовно svn та git repos.


Ви знайдете apktool незамінним, якщо хочете отримати ресурси (тобто зображення з програми Android. Насправді, інструмент взагалі не має конкурентів!) Інтернет-версія apktool доступна тут: www.javadecompilers.com/apktool
Ендрю Рукін

23

У цих двох статтях описано, як поєднати використання apktoolта dex2jarвзяти APKфайл та створити проект Eclipse, який може створити та запустити його.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

В основному ви:

  1. Використовуйте apktoolдля отримання файлів ресурсів з apk
  2. Використовуйте dex2jarдля отримання файлу jar, який містить класи у форматі, який сподобається Eclipse.
  3. Створіть проект Eclipse, вкажіть його на файли ресурсів та новий файл jar
  4. Відкрийте файл jar із утилітою zip та видаліть наявні ресурси
  5. Відкрийте файл jar, JDGuiщоб переглянути вихідний код
  6. Візьміть потрібний вихідний код JDGui, вставте його в клас всередині Eclipse та змініть його
  7. Видаліть цей клас із файлу jar (щоб у вас не було визначено один і той же клас кілька разів)
  8. Виконати його.

2
Я знаю, на це питання відповіли все-таки, я хотів би передати інформацію: є інтернет-декомпілятор для android apks decompileandroid.com Завантажити apk з локальної машини, зачекайте кілька моментів, завантажте вихідний код у zip-форматі.
Snehal Masne

2
Звучить красиво. І тоді на сайті decompileandroid також є копія всього вашого джерела! Розумний!
DDSports

Одне питання, у мене декомпільована apk, але в jd gui я не знаю, чи існують реальні класи Java, чи знаєте ви, чи розгортається apk чи є справжні класи Java?

21

apktool буде працювати. Вам навіть не потрібно знати магазину ключів, щоб витягти вихідний код (що трохи страшно). Основним недоліком є ​​те, що джерело представлено у форматі Smali замість Java. Інші файли, такі як значок та main.xml, проходять цілком чудово, але, можливо, варто витратити час, щоб принаймні відновити їх. Зрештою, вам, швидше за все, потрібно буде переписати свій код Java з нуля.

Ви можете знайти apktool тут . Просто завантажте apktool та відповідний помічник (для Windows, Linux або Mac OS). Я рекомендую використовувати такий інструмент, як 7-zip, щоб розпакувати їх.


16

Є кілька способів зробити це:

  1. Використовуйте функцію "Профіль або налагодження APK" в Android Studio 3.0.

    Це дозволяє відкривати та досліджувати APK в Android Studio. Заняття декомпілюються в смалі. Ресурси не витягуються, і такі речі, як "Перейти до визначення", "Знайти всі посилання" та налагодження, не працюють без вихідного коду (android studio 3.0 canary 9). Деякі додаткові функції smali можуть працювати з smalidea .

    android-studio

    select-файл

    код

  2. Використовуйте jadx .

    Jadx декомпілює код у заданому APK до вихідних файлів Java.

    jdax-img

  3. Використовуйте apktool .

    Apktool - це інструмент командного рядка, який витягує ресурси та декомпілює код у smali для заданої apk. Ви також можете перекомпілювати за допомогою apktool. Ось приклад цього в дії:

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...

Я спробував jadx, але навіть з простим helloworld, хоча він декомпілював його в java, але, намагаючись відкрити проект в android studio і скомпілювати його назад до apk, не вдається з багатьох причин (копії файлів тощо). Чи є який-небудь метод, який створює Java, який можна зібрати назад до apk?
ransh

1
@ransh Я зазвичай використовую jadx для читання коду, а потім apktool для зміни коду. apktool не створює Java, але він дозволяє повторно компілювати.
0xcaff

0xcaff, дякую за роз’яснення. які мають сенс зараз. Оскільки спроба скомпілювати Java-декомпіляцію в андроїд-студії, не вийшло.
ransh

16

Можна побачити джерело:

В Android 2.3 студії, Build -> Analyze APK -> Select the apk that you want to decompile.
Ви побачите, що це вихідний код.

Посилання для довідки:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2


9
Він перелічує класи та методи, але не дає вихідного коду.
WSS

Ви можете отримати вищезазначені файли, лише змінивши ".apk" на ".zip"
М. Усман Хан,

7

Я покажу вам інший спосіб декомпілювати файли .apk .

Перші 2 кроки ви можете виконати з " пранкул гарга ". Отже, у вас є інші можливості:

Крок 3 ':

Завантажте "JD-GUI" , це легко знайти. Відкрийте свій .jar файл у "jd-gui.exe". (Файл> Відкрити файл> 'знайшов .jar файл'). Після цієї процедури ви можете зберегти всі ресурси у .zip- файлі.

Тому,

1-й - Ви повинні перейменувати .apk файл у .zip

2-е - Вам потрібно розшифрувати .dex- файл (якщо ви хочете, розшифруйте .apk- файл до dex2jar , це можливо)

Третє - Ви повинні розшифрувати .jar файл за допомогою JD-GUI


20
Що дає ця відповідь, що інші не роблять?
Jørgen R

Вам дійсно не потрібно перейменовувати його на zip. Я міг би відкрити apk-файл безпосередньо за допомогою 7-zip.
miva2

7

Нижче ONLINE інструмент:

http://www.javadecompilers.com/apk

це зробити ВСЕ одним клацанням миші: декомпільований .java файли + ресурси + xml (в одному .zip-файлі) з дуже хорошим декомпілятором (jadx return java-код у місцях / функціях, де інші компілюють повернення коментарів усередині функції на кшталт "неможливо декомпілювати" або деякі андроїд-асемблер / код машини)


так, це чудово, але замість імен функцій він змінив усі назви функцій на CS1001 тощо. Тож як їх розпізнати. і ще одне, що ми можемо використовувати цей декомпільований apk безпосередньо як наш проект студії Android, чи він буде працювати?
Зія Ур Рахман

то з якою метою ми використовуємо для декомпіляції деяких apk, якщо ми не можемо використовувати їх функціональність у наших додатках.
Зія Ур Рахман

@ ZiaUrRahman я не знаю. Однак у моєму випадку я декомпілюю код для аналізу алгоритму. Чи ви перевіряєте, чи може декомпільований код із цього інструменту андроїд-студія скласти повністю автоматичним способом - чи потрібна певна "обробка людей"?
Kamil Kiełczewski

1
Я імпортував проект декомпільованого проекту в студію Android, але в ній Gradle немає і в проекті є багато файлів, але не зрозумів, поки ми не запустили його. Просто не вийшло. Мені потрібно зробити декомпільований проект повністю функціональним в андроїд-студії, а потім отримати основну функціональність деяких, а потім хочу використовувати / вбудувати його у свій власний проект. Так чи є спосіб, як це зробити?
Зія Ур Рахман

6

Цей сайт https://www.apkdecompilers.com/ робив це автоматично.

Спочатку я спробував сайт, зазначений у прийнятій відповіді, але це не спрацювало для мене.


Я не міг отримати свій вихідний код Java ... З'являється щось таке, як прикріплений файл і ..
iman kazemayni

@imankazemayni за посиланням вище, "перегляньте" свій файл APK і натисніть "Декомпілювати свій APK". Це займе деякий час, і тоді він повинен дати вам вихідний код, якщо код не зашифрований.
М. Усман Хан

чи знаєте ви, що багатозахисний вплив на шифрування?
iman kazemayni

6

Я особисто рекомендую Показати програму Java Android для отримання вихідного коду. Ви можете завантажити його з ігрового магазину або звідси


Здебільшого інтернет-компілятори не працюють, але ця програма працює. Дякую
Суніл

4

Apktool для зворотного проектування сторонніх, закритих, двійкових програм для Android.

Він може розшифрувати ресурси майже до оригінальної форми та відновити їх після внесення змін.

Це дозволяє налагоджувати код smali поетапно. Крім того, це полегшує роботу з додатком через проектну структуру файлів та автоматизацію деяких повторюваних завдань, таких як нарощування apk тощо.

http://ibotpeaches.github.io/Apktool/


3

apktool - це шлях. Також існує інтернет-сервіс apktool: http://www.javadecompilers.com/apktool

Очевидно, деякі обмеження існують завдяки сервісу "онлайн-характеру": ви можете витягнути і дослідити активи та файл маніфесту, але наразі неможливо перекомпілювати програму.

Все-таки це непростий спосіб «відкрити» додаток для android.


3

Ви можете спробувати DexPatcher . Він навіть інтегрується з Android Studio. Він використовує Apktool і Dex2Jar внутрішньо.
Ці інструменти також можна використовувати самостійно. Apktool декомпілює apk та витягує .dex файли, які можна далі перетворити в jar за допомогою Dex2Jar. Jar можна декомпілювати за допомогою JD-GUI . Ви можете бачити код Java за допомогою цього інструменту. Хоча подібність декомпільованого коду з фактичним кодом не може бути гарантована. На ринку є кілька сучасних інструментів обфускування коду , які псують код, що ускладнює його декомпіляцію / розуміння. напр. Прогуар


Привіт Як користуватися DexPatcher з Android Studio?
ravi152

Неможливо все пояснити в коментарях. Google є вашим другом :) Також є кілька приємних навчальних посібників YouTube.
Лакшмікант Дешпанде

2

виходячи з вашого стану, якщо ваш Android apk:

Умова1: НЕ твердне (від Tencent Legu / Qihoo 360 / ...)

Вибір1: використання онлайн-сервісу

як от:

за допомогою www.javadecompilers.com

йти до:

для автоматичного декодування з apk в java вихідний код

кроки:

uploadapk файл + натисніть Run+ почекайте деякий час + натисніть, Downloadщоб отримати zip + unzip ->

sources/com/{yourCompanyName}/{yourProjectName}

- ваш очікуваний вихідний код Java

Вибір2: самостійно декомпілювати / розламати

використовувати відповідний інструмент, щоб самостійно декомпілювати / зламати:

використовувати jadx/ jadx-guiперетворити apkнаjava sourcecode

завантажте jadx-0.9.0.zip, потім розпакуйте для getbin/jadx , тоді:

  • режим командного рядка:
    • у термінальному виконанні: jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • output_folder покаже розшифровані sourcesтаresources
      • sources/com/{yourCompanyName}/{yourProjectName} є вашим очікуваним java sourcecode
  • Режим графічного інтерфейсу
    • подвійний клік для запуску jadx-0.9.0/bin/jadx-gui(Linux jadx-gui.sh/ Windows jadx-gui.bat)
    • відкрити apkфайл
    • воно автоматично розшифрує -> побачити очікуваний вихідний код Java
    • save all або save as Gradle project

наприклад:

Умова2: затвердіння (від Tencent Legu / Qihoo 360 / ...)

основний метод 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. jar to java src

детальне пояснення:

Крок 1: apk/app to dex

використовувати інструмент ( FDex2/ DumpDex) дамп / підключити (один чи кілька) dexфайл із запущеного додатка

кроки:

підготувати середовище

скинути dexз запущеної програми

  • запустіть, FDex2потім натисніть своє ім’я apk, щоб пізніше ввімкнути / підключити dex

  • (у телефоні / емуляторі) запустіть додаток
  • знайти та скопіювати дамп із усіх apk ресурсів у /data/data/com/yourCompanyName/yourProjectName
    • в кореневій папці зазвичай знайдеться декілька dexфайлів

Крок 2: dex to jar

використовувати файл ( dex2jar) перетворити (специфічний, що містить логіку програми) файлdexjar

скачайте dex2jar отримав dex-tools-2.1-SNAPSHOT.zip , розпакуйте отримано dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh, потім

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

наприклад:

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

Крок 3: jar to java src

скористайтеся одним із інструментів:

перетворити jarвjava src

для перетворення з jar в java src ефект:

Jadx> Procyon> CRF>>JD-GUI

тому рекомендую використовувати: Jadx/jadx-gui

кроки:

  • двічі клацніть для запуску jadx-gui
  • відкрити dexфайл
  • File -> save all

наприклад:

експортується java src:


Більш детальне пояснення можна побачити в моєму онлайн- підручнику з китайської електронної книги :


2

Android studio пропонує вам проаналізувати будь-який файл apk.

1 - У меню збірки виберіть параметр аналізу apk та виберіть файл apk. 2 - Це призведе до отримання файлу class.dex та інших файлів. 3 - Клацніть на Class.dex, який надасть вам список папок, пакетів, бібліотек та файлів. 4 - З налаштувань андроїд-студії встановіть плагін під назвою "Dex to Jar" 5 - клацніть на будь-який файл діяльності вашого вилученого проекту та виберіть dex для jar із меню збірки.

Це призведе до отримання фактичного коду вашого файлу java.

Ура.


1

Найпростіший спосіб - використання Apk OneClick Decompiler. Це пакет інструментів для декомпіляції та розбирання APK-файлів (Android-пакетів).

ОСОБЛИВОСТІ

  • Усі функції інтегровані у меню Windows правою кнопкою миші.
  • Декомпілюйте класи APK у вихідні коди Java.
  • Розберіть APK, щоб смалі код та розшифрували його ресурси.
  • Встановіть APK на телефон правою кнопкою миші.
  • Перекомпілюйте APK після редагування коду smmali та / або ресурсів. Під час перекомпіляції:
  • Оптимізуйте PNG зображення
  • Підпишіть apks
  • Зіпалігн

ВИМОГИ

Необхідно встановити середовище виконання Java (JRE).

Ви можете завантажити його за цим посиланням Apk OneClick Decompiler

Насолоджуйтесь цим.


1

Як найпростіший метод я знайшов:

  1. Перейменуйте додаток app.apk на app.zip (Змініть розширення з apk на zip)
  2. Витягніть zip-файл у папку
  3. Використовуйте інструмент JADX для читання вихідного коду, присутнього у файлі class.dex.

1

Для цього є додаток, який, як правило, займає лише кілька клацань, і ви закінчили. https://github.com/Nuvolect/DeepDive-Android

  1. Виберіть Додатки, у розділі "Встановлені програми" виберіть додаток. Якщо його немає, ви можете завантажити APK.
  2. Виберіть "Витягнути APK"
  3. Виберіть "Розпакувати APK"
  4. Виберіть "Декомпілювати з Jadx". Це може зайняти кілька секунд або кілька хвилин, залежно від швидкості вашого пристрою

Після цього ви можете переглядати вихідний код, завантажити його на інший комп'ютер за допомогою elFinder або здійснити пошук за допомогою Lucene.

Окрім Jadx, у нього є декомпілятори CFR та Fernflower.


0

Я їхав з розуму цілими днями, намагаючись змусити dex2jar працювати на ноутбуці fedora 31 проти apk, який просто не збирався працювати. Цей скрипт python 3 зробив трюк за лічені хвилини і встановивши jd-gui, файли класу зробили читатими людину.

http://java-decompiler.github.io/

https://github.com/Storyyeller/enjarify

конкретно, ось що я побіг:

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

Тепер вам слід мати можливість переказати наступне, щоб отримати файли класу:

$> enjarify yourapkfile.apk

І для початку jd-gui:

$> jd-gui

Тоді просто відкрийте файли вашого класу!



0

Використовуйте цей інструмент http://www.javadecompilers.com/

Але останнім часом на ринок вийшла нова хвиля декомпіляторів: Procyon, CFR, JD, Fernflower, Krakatau, Candle.

Ось список декомпіляторів, представлений на цьому веб-сайті:

CFR - Безкоштовно, вихідний код недоступний, http://www.benf.org/other/cfr/ Автор: Лі Бенфілд

Дуже добре оновлений декомпілятор! CFR здатний декомпілювати сучасні функції Java - модулі Java 9, лямбди Java 8, струнні комутатори Java 7 тощо. Це навіть дозволить гідно перетворити файли класу з інших мов JVM назад у Java!

JD - безкоштовно лише для некомерційного використання, http://jd.benow.ca/ Автор: Еммануель Дюпюй

Оновлено у 2015 році. Має власний візуальний інтерфейс та плагіни для Eclipse та IntelliJ. Написано на C ++, так що дуже швидко. Підтримує Java 5.

Procyon - відкритий код, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler Автор: Майк Стробель

Fernflower - відкритий код, https://github.com/fesh0r/fernflower Автор: Єгор Ушаков

Оновлений у 2015 р. Дуже перспективний аналітичний декомпілятор Java, тепер стає невід'ємною частиною IntelliJ 14. ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler ) Підтримує Java до версії 6 (Анотації, дженерики, перерахунки)

JAD - дається тут лише з історичної причини. Безкоштовно, вихідний код відсутній, дзеркало для завантаження jad Автор: Павло Кузнецов

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