Категория > Новости > Отмычки для софта. Выбираем инструменты реверса и пентеста приложений для Android - «Новости»
Отмычки для софта. Выбираем инструменты реверса и пентеста приложений для Android - «Новости»28-06-2018, 03:01. Автор: Evans |
Содержание статьиЗа десять лет существования Android разработчики приложений и те, кто эти приложения взламывает, обзавелись массой инструментов, направленных друг против друга. О том, какими способами можно защитить свое приложение, мы уже поговорили, а сегодня у нас обзор инструментов для взлома и реверса приложений.Условно все инструменты анализа и реверса приложений (не только для Android) можно разделить на две группы:
В обеих группах есть утилиты и для самых маленьких (запустил — получил список уязвимостей), и для матерых пентестеров. Мы рассмотрим их все. Статический анализИтак, для начала поговорим об инструментах статического анализа. Каждый пентестер должен иметь в своем арсенале хотя бы два из них. Это декомпилятор и дизассемблер. Декомпилятор нужен, чтобы перегнать байт-код Dalvik обратно в код Java и с его помощью разобраться, как работает приложение. Дизассемблер транслирует байт-код в гораздо более низкоуровневый код Smali (местный ассемблер), в котором труднее разобраться, но зато он всегда корректен настолько, что его можно собрать обратно в приложение. Этой особенностью можно воспользоваться, например, чтобы внедрить в приложение собственный код, как мы это сделали во второй части статьи о взломе приложений для Android. Также пригодится деобфускатор. Он сделает декомпилированный код немного более читаемым. О том, что такое обфускация и деобфускация, мы также уже писали в третьей части статьи о взломе приложений. JadxПервый инструмент в нашем списке — декомпилятор Jadx. Это активно развиваемый открытый декомпилятор, который выдает достаточно неплохой код Java на выходе и даже имеет функцию деобфускации кода. Работать с ним просто: запускаешь Jadx-gui, с его помощью выбираешь APK-файл приложений и видишь иерархию пакетов и файлы с исходниками на Java. Jadx может работать и в режиме командной строки. Например, следующая команда декомпилирует приложение example.apk и поместит полученный код Java в каталог out:
Более того, Jadx может дополнительно сгенерировать файлы build.gradle, чтобы исходники можно было импортировать в Android Studio:
Собрать приложение из них не получится, зато анализировать код будет гораздо удобнее. Jadx в черном ApktoolВторой инструмент, который должен обязательно быть на твоем диске, — это Apktool. Его назначение — разборка и сборка приложений. При этом термин «разборка» подразумевает дизассемблирование кода приложения в файлы формата Smali, а также декомпрессию ресурсов и файла AndroidManifest.xml. С помощью Apktool можно разобрать приложение, проанализировать дизассемблерный код, внести в него правки и собрать обратно. О том, как это сделать, мы подробно писали в статье «Ломаем Android». Разбираем приложение с помощью Apktool APKiDЭта небольшая утилита понадобится тебе, когда ты заметишь, что Jadx не в состоянии декомпилировать приложение. В большинстве случаев это значит, что приложение было обфусцировано или упаковано с помощью специальных инструментов. APKiD позволяет узнать, какие конкретно инструменты были использованы, выяснить, было ли приложение пересобрано с помощью Apktool и используются ли в нем какие-то другие техники для защиты от дизассемблирования/декомпиляции и запуска в виртуальной машине. APKiD далеко не всегда работает корректно, а в некоторых случаях вообще не выводит никакой информации на экран. Но он может помочь, если ты в тупике — вывод утилиты понятный. Например:
Но есть одно неочевидное поле: compiler. Оно обычно содержит dx или dexlib. Dx — стандартный компилятор Android SDK, а dexlib — это библиотека сборки файлов DEX из Apktool. Проще говоря, если в поле compiler находится dexlib, значит, приложение было пересобрано с помощью Apktool или аналогичного инструмента. Результат работы APKiD для нескольких образцов малвари Перейти обратно к новости |