В этом репозитории мы найдем пошаговое руководство по обратному проектированию APK.
Реверс-инжиниринг может помочь нам в нескольких аспектах, таких как выявление вредоносного программного обеспечения или кода , обнаружение недостатков безопасности , обнаружение неожиданных функций / нарушение бизнес-правил... Тем не менее, давайте углубимся во вселенную Android.
Начиная с основ, мы можем разделить наш пакет Android (APK) на несколько частей:
Smali — это удобочитаемая версия байт-кода Dalvik, проще говоря, она работает как сборка/дизассемблирование. Формат исполняемого файла Dalvik (.dex)
Что касается кода, давайте посмотрим на разницу между Java и Smali:
public static void printHelloWorld() {
System.out.println("Hello World")
}
И наш тот же код на Smali:
.method public static printHelloWorld()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello World"
invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
Мы рассмотрели необходимые базовые понятия и теперь приступаем к работе!
Шаг 1:
Выберите APK, который хотите отменить.
Если вы не можете легко найти его в самом магазине приложений, вы можете сделать это непосредственно на таких сайтах, как APKCombo или APKMonk.
Оказавшись здесь, обратите внимание на некоторые вещи, которые могут быть интересны:
- Qual é o URL da API? (geralmente emos algo como api.domain.com)
- Qual é método de autenticação utilizado? Eu preciso criar um login para acessar?
- Quais são as chamadas que eu posso encontrar e quais são os parâmetros eles esperam?
Когда у нас есть APK, пришло время его декомпилировать, чтобы мы могли проанализировать код.
(Инструменты динамического анализа, такие как MOBSF, позволяют загружать код напрямую, будь то на Java или SMALI).
Теперь мы будем использовать инструменты, первый из которых APKTOOL, подробнее о нем вы увидите ниже, но в целом он будет отвечать за декомпиляцию файлов, создание там же папки со всеми декомпилированными файлами. . Отсюда вы сможете проанализировать все необходимые коды.
Используемая здесь команда будет следующей:
- apktool d ~/Desktop/aplicativo_app.apk
Извлечение файла «classes.dex» из APK.
Используйте инструмент dex2jar для преобразования в файлы классов Java. В результате получается jar-файл.
- sh d2j-dex2jar.sh classes.dex
Используйте JD-GUI для извлечения исходного кода из файла jar.
- Arraste o arquivo classes-dex2jar.jar pro JD-GUI
Mobile Security Framework — это инструмент, который автоматизирует анализ APK. Внутри мы получаем более подробную информацию о частях, из которых состоят APK, которые мы видели ранее.
dex2jar
дедексер
apktool
apktool — это Java-инструмент с открытым исходным кодом для обратного проектирования приложений Android. Он может декодировать APK-файлы в их исходный код в удобочитаемом XML. Также разделение всех классов и методов, содержащихся в файле, на Smali. Таким образом, вы можете изменять функции или выполнение программы. Используя код Smali, вы можете добавить новые функции в это приложение или изменить ожидаемое поведение.
Обычно используется для закрепления SSL.
adb (мост отладки Android)
андрогард
Экспоузд Фреймворк
Команды: //скоро
Обход Android SSL
Фрида
Теперь, когда у нас есть основа того, как это работает, пришло время попрактиковаться! Вот список некоторых лабораторных работ, которые вы можете использовать в качестве упражнения:
Проверьте следующие типы атак:
Спасибо, что пришли сюда! Хорошего дня.