Основан 26 Июля 2013 года
freehacks.ru fhacksnplmzxaaoo.onion
ДДОС СЕРВИС
Магазин Qiwi,Yandex Кошельков

Результаты опроса: Помогла ли вам эта статья?

Голосовавшие
1. Вы ещё не голосовали в этом опросе
  • Помогла, спасибо

    1 100.00%
  • Уже знал об этом способе, ничего нового

    0 0%
Показано с 1 по 1 из 1
  1. #1

    Декомпиляция Android приложений (Decompile APK)

    DECOMPILE APK APPLICATIONS

    Расскажу вам о нескольких видах декомпиляции Android приложения (APK файлов). Есть три вида декомпиляции: apk в smali, apk в ресурсы и apk в java. Из всех этих трех видов, не один не является полной декомпиляцией и имеет свои минусы. Например в случае с декомпиляцией apk в java, обратно скомпилировать практически не получиться, но конечно возможно такое, что вы сможете собрать из ресурсов и java файлов проект под AIDE и скомпилить его обратно, но с большими приложениями у вас уйдет огромное количество времени на это. (Если не так, то ткните меня в пример, где существует действуя по этим методам, способ для полной декомпиляции с возможностью обратной компиляции в дальнейшем).

    Чтобы это произвести вам нужно установить Java 1.8 как минимум и далее скачать apk-decompiler от DiegoRBaquero.
    Вот ссыль: [Только зарегистрированные могут видеть это. ]

    Если не по какой-то причине не хотите использовать сборку от него, то можете в ручную найти j2d-jar2dex и apk-tool по отдельности, так как его сборник работает на основе этих двух програмулин. Вот эта библиотека на [Только зарегистрированные могут видеть это. ].

    Apk-tool можно найти здесь, там же и инструкция от разработчиков пакета: [Только зарегистрированные могут видеть это. ].

    Также вам еще нужно будет скачать jd-gui: [Только зарегистрированные могут видеть это. ], это понадобиться чтобы из jar файла построенного j2d получить архив с файлами ".java". Сразу скажу, что не все приложения будут поддаваться такому виду декомпиляции. Но мелкие не замысловатые приложения от разработчиков не заботящихся о защите своих приложений этот способ спокойно справиться. Все инструкции буду приводить на премере Windows. Также это все работает и для Unix систем.

    Немного теории

    Об используемых компонентах и программах
    • dex2jar — транслятор байт-кода Dalvik в байт-код JVM, на основе которого мы сможем получить код на языке Java;
    • jd-gui — сам декомпилятор, позволяющий получить из байт-кода JVM читаемый код Java. В качестве альтернативы можно использовать Jad ([Только зарегистрированные могут видеть это. ] хоть он и довольно старый, но в некоторых случаях генерирует более читаемый код, нежели Jd-gui.
    • smali — ассемблер/дизассемблер байт-кода виртуальной машины Dalvik (code.google.com/p/smali);
    • aapt — инструмент для запаковки ресурсов (по умолчанию ресурсы хранятся в бинарном виде для оптимизации производительности приложения). Входит в состав Android SDK, но может быть получен и отдельно;
    • signer — инструмент для цифровой подписи модифицированного пакета.


    Устройство APK пакетов:
    • META-INF/ — содержит цифровой сертификат приложения, удостоверяющий его создателя, и контрольные суммы файлов пакета;
    • res/ — различные ресурсы, которые приложение использует в своей работе, например изображения, декларативное описание интерфейса, а также другие данные;
    • AndroidManifest.xml — описание приложения. Сюда входит, например, список требуемых разрешений, требуемая версия Android и необходимое разрешение экрана;
    • classes.dex — компилированный байт-код приложения для виртуальной машины Dalvik;
    • resources.arsc — тоже ресурсы, но другого рода — в частности, строки (да-да, этот файл можно использовать для русификации!).
    • assets — аналог ресурсов. Основное отличие — для доступа к ресурсу необходимо знать его идентификатор, список asset’ов же можно получать динамически, используя метод AssetManager.list() в коде приложения;
    • lib — нативные Linux-библиотеки, написанные с помощью NDK (Native Development Kit).


    Есть несколько способов получить apk файл:
    • расширение APK Downloader для Chrome;
    • приложение Real APK Leecher;
    • различные файлообменники и варезники.


    Переходим к практике

    Инструкция по действиям для apk в java:
    1. Берем нужный apk файл и кладем в папку с dex2jar и Java Decompiler.
    2. Открываем Командную строку (Обработчик команд Windows) в вышеупомянутой папке (В папке по пустому месте при зажатой кнопке Shift нажимаем правую кнопку мыши и выбираем Обработчик команд Windows).
    3. Вводим команду dex2jar <apk-name>.apk и если все прошло хорошо, в той же папке появится файл Calculator.apk.dex2jar.jar
    4. Запускаем jd-gui и открываем полученный на предыдущем шаге файл. (На Windows 7 открывать с правами администратора и с совместимостью Windows XP SP3)
    5. Выбираем пункт меню File-Save All Sources и сохраняем.
    6. Извлекаем полученный zip архив.
    7. Помещаем полученную папку в папку src (надо предварительно создать).(Что бы получилась примерно такая структура D:\Decompile\Calculator\src\com\android)
    8. Опять же в командной строке вводим команду apktool d <apk-name>.apk <folder-name>, где <apk-name>.apk-имя пакета, <folder-name> - папка для декомпиляции
    9. Если все хорошо, тогда в указанной папке будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml, apktool.yml
    10. Все готово, исходники получены. Правда после декомпиляции в коде есть, можно сказать, ошибки, я заметил пока только что вместо true и false стоят 1 и 0 соответственно.


    Не забываем про обфускаторы: Если apk файл был пропущен при компиляции через обфускатор (proguard), тогда полученный код будет плохо читаем.

    Декомпиляция в smali или в ресурсы:
    1. Берем нужный apk файл и кладем его в папку с apk-tool
    2. Открываем CMD от имени администратора в папке с apk-tool и с вашим apk пакетом
    3. Вводим команду: java -jar apktool.jar d -s apkname.apk


    Лог в CMD который говорит о успешной декомпиляции:
    Код:
    I: Using Apktool 2.0.0 on testapp.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...
    Теперь у вас получены ресурсы всего приложения (.xml и т.п. файлы), можно их редактировать и обратно запоковать. Отлично работает с WhatsApp, Viber. Но ничего серьезного вы такими действиями сделать не сможете, так как это просто управление интерфейсом (не совсем, если знать плюшки, то можно все). Поэтому, чтобы полазить далее, вам нужно полученный "classes.dex" конвертнуть в smali.

    Собираем обратно из SMALI
    1. Открываем CMD в той же директории где лежит папка с декомпилированным APK
    2. И вводим в cmd: java -jar apktool.jar b AppFolder


    Все готово!

    Скорее всего есть методы получше, но это пока единственный который имеется у меня. Если вы знаете какие-то другие способы, будет очень интересно поизучать их.

    Всем добра и жду вашей критики. Не занимаюсь не взломами ничем, просто решил написать статью из опыта по разработке минимальной защиты от школьника! =) Надеюсь, что помог хоть кому-то этой небольшой статьей.

    Источники:
    [Только зарегистрированные могут видеть это. ]
    [Только зарегистрированные могут видеть это. ]
    Изображения Изображения
    Последний раз редактировалось hidden; 26.10.2018 в 09:39.
    /* HIDDEN */

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Информация на сайте предоставлена исключительно в ознакомительных целях, использование знаний в противозаконных целях преследуется по закону! Администрация не несет ответственности за ваши деяния.