Мы уже неоднократно рассказывали о взломе приложений для Android. Несколько раз мы вскрывали приложения практически голыми руками, имея только декомпилятор и дизассемблер, один раз прибегли к помощи фреймворка Frida, но есть и еще один, одновременно очевидный и неочевидный способ взлома — использовать отладчик.
INFO
Предыдущие статьи про взлом приложений:
Делаем платное приложение бесплатным
Внедряем малварь в WhatsApp
Обходим обфускаторы, упаковщики и другие средства защиты кода
Внедряем код в чужие приложения с помощью Frida
Строго говоря, это не то чтобы отдельный способ взлома, а скорее, способ разобраться в поведении приложения, чтобы найти его слабые места. Смысл здесь следующий: представь, что у тебя на руках семпл малвари. Ее код сильно обфусцирован, декомпилятор едва переваривает половину кода, и разобраться в ее работе почти невозможно. Тебе нужен способ проследить ее воркфлоу, разобраться в том, какая цепочка классов вызывается при возникновении определенных событий.
Во все времена лучший способ сделать это состоял в использовании отладчика. Но есть одна проблема: у тебя нет исходников, а без них отладчик мало полезен в твоем деле. Зато у тебя есть возможность декомпилировать приложение в Java (нередко только частично) или в достаточно высокоуровневый (в сравнении с машинным кодом) код smali, который всегда будет полностью корректным.
Так что в целом алгоритм твоих действий будет выглядеть так:
Достаем подопытное приложение из устройства.
Дизассемблируем его, выставляем флаг отладки.
Собираем обратно и устанавливаем на устройство.
Импортируем декомпилированный или дизассемблированный код в Android Studio.
Запускаем отладку, будто это наше приложение.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Флаг отладки
Android устроен таким образом, что не позволит подключиться с помощью отладчика к приложению, которое этого не хочет. А факт «хотения» определяется флагом отладки, который представляет собой простую строку в файле AndroidManifest.xml приложения.
Поэтому первое, что мы должны сделать, — это разобрать приложение, выставить флаг отладки в значение true и собрать обратно. Проще всего это сделать с помощью утилиты apktool. Просто натравливаем ее на подопытное приложение, и готово:
$ java -jar apktool.jar d app.apk
В текущем каталоге появится подкаталог app (ну или как назывался пакет с приложением).
Далее переходим в него и видим несколько файлов и каталогов. Нам они еще пригодятся, а пока открываем файл AndroidManifest.xml в текстовом редакторе и находим строку, начинающуюся с GitHub.
После этого приложение можно установить на устройство.
Декомпиляция и дизассемблирование
Дизассемблерный листинг приложения у нас уже есть, мы получили его, разобрав приложение с помощью apktool. Мы можем импортировать его в Android Studio и начать отладку. Но лучше все-таки попытаться получить исходники Java, гораздо более легкие в чтении.
Для этого приложение необходимо декомпилировать. Сделать это можно с помощью нескольких различных инструментов, но я предпочитаю использовать декомпилятор Jadx. Он хорошо переваривает код, имеет средства деобфускации и активно развивается.
Скачиваем Jadx, запускаем, выбираем apk-файл приложения. Откроется главное окно приложения. Слева будут пакеты, справа исходники. Лучше сразу проверить их корректность (действительно ли получился читаемый Java-код), а затем можно экспортировать их с помощью меню File ? Save as gradle project.
Декомпиляция приложения в Jadx
Содержание статьи Декомпиляция и дизассемблирование Используем дизассемблированный код Мы уже неоднократно рассказывали о взломе приложений для Android. Несколько раз мы вскрывали приложения практически голыми руками, имея только декомпилятор и дизассемблер, один раз прибегли к помощи фреймворка Frida, но есть и еще один, одновременно очевидный и неочевидный способ взлома — использовать отладчик. INFO Предыдущие статьи про взлом приложений: Делаем платное приложение бесплатным Внедряем малварь в WhatsApp Обходим обфускаторы, упаковщики и другие средства защиты кода Внедряем код в чужие приложения с помощью Frida Строго говоря, это не то чтобы отдельный способ взлома, а скорее, способ разобраться в поведении приложения, чтобы найти его слабые места. Смысл здесь следующий: представь, что у тебя на руках семпл малвари. Ее код сильно обфусцирован, декомпилятор едва переваривает половину кода, и разобраться в ее работе почти невозможно. Тебе нужен способ проследить ее воркфлоу, разобраться в том, какая цепочка классов вызывается при возникновении определенных событий. Во все времена лучший способ сделать это состоял в использовании отладчика. Но есть одна проблема: у тебя нет исходников, а без них отладчик мало полезен в твоем деле. Зато у тебя есть возможность декомпилировать приложение в Java (нередко только частично) или в достаточно высокоуровневый (в сравнении с машинным кодом) код smali, который всегда будет полностью корректным. Так что в целом алгоритм твоих действий будет выглядеть так: Достаем подопытное приложение из устройства. Дизассемблируем его, выставляем флаг отладки. Собираем обратно и устанавливаем на устройство. Импортируем декомпилированный или дизассемблированный код в Android Studio. Запускаем отладку, будто это наше приложение. WARNING Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи. Флаг отладки Android устроен таким образом, что не позволит подключиться с помощью отладчика к приложению, которое этого не хочет. А факт «хотения» определяется флагом отладки, который представляет собой простую строку в файле AndroidManifest.xml приложения. Поэтому первое, что мы должны сделать, — это разобрать приложение, выставить флаг отладки в значение true и собрать обратно. Проще всего это сделать с помощью утилиты apktool. Просто натравливаем ее на подопытное приложение, и готово: В текущем каталоге появится подкаталог app (ну или как назывался пакет с приложением). Далее переходим в него и видим несколько файлов и каталогов. Нам они еще пригодятся, а пока открываем файл AndroidManifest.xml в текстовом редакторе и находим строку, начинающуюся с GitHub. После этого приложение можно установить на устройство. Декомпиляция и дизассемблирование Дизассемблерный листинг приложения у нас уже есть, мы получили его, разобрав приложение с помощью apktool. Мы можем импортировать его в Android Studio и начать отладку. Но лучше все-таки попытаться получить исходники Java, гораздо более легкие в чтении. Для этого приложение необходимо декомпилировать. Сделать это можно с помощью нескольких различных инструментов, но я предпочитаю использовать декомпилятор Jadx. Он хорошо переваривает код, имеет средства деобфускации и активно развивается. Скачиваем Jadx, запускаем, выбираем apk-файл приложения. Откроется главное окно приложения. Слева будут пакеты, справа исходники. Лучше сразу проверить их корректность (действительно ли получился читаемый Java-код), а затем можно экспортировать их с помощью меню File ? Save as gradle project. Декомпиляция приложения в Jadx Источник новости - google.com