Android_emuroot-это скрипт Python, который позволяет предоставлять привилегии root на Fly to Shells, работающие на виртуальных машинах Android, в которых используются изображения эмулятора Google, называемые Google API PlayStore , чтобы помочь реверс-инженерам углубиться в свои исследования.
Android_emuroot требует, чтобы эмулятор Google API PlayStore был запущен с помощью опции QEMU GDB STUB, и использует его для изменения метаданных процессов, хранящихся в памяти в структурах задач ядра. Основная идея состоит в том, чтобы начать с оболочки с самыми низкими привилегиями, а затем найти связанную структуру учетных данных в памяти ядра, чтобы заменить ее на другую структуру, имеющую самые высокие привилегии.
Реализация этой модификации памяти на эмуляторе Google API PlayStore представляет следующие два преимущества:
Android_emuroot уже требует работы Android SDK. Рекомендуется установка инструментов командной строки (загружается через Android Studio Gui: Инструменты> Android> SDK Manager> SDK Tools).
Android_emuroot - это скрипт Python, который использует средства ADB, а также средства GDB из двух следующих модулей Python:
Убедитесь, что у вас есть эти модули или установите их через PIP: pip3 install -r requirements.txt .
NB: Android_emuroot поддерживает Python 2 и Python 3.
В зависимости от аппаратной архитектуры и версии эмулятора ядра, макет памяти связанного изображения QEMU варьируется. Таким образом, местоположение патчей памяти, реализованное Android_emuroot, также варьируется.
На данный момент Android_emuroot поддерживает следующие версии эмуляторов:
| Android -версия | API | Архитектура | Ядро | Строить |
|---|---|---|---|---|
| Android 7.0 | 24 | x86 | 3.10 | Google-Api-PlayStore |
| Android 7.1.1 | 25 | x86 | 3.10 | Google-Api-PlayStore |
| Android 8.0 | 26 | x86 | 3.18 | Google-Api-PlayStore |
| Android 8.1 | 27 | x86 | 3.18 | Google-Api-PlayStore |
Убедитесь, что AVD, который вы хотите корни, основан на одном эмуляторе этого списка.
NB: эмуляторы могут быть загружены через Sdkmanager, инструмент из инструментального инструмента Android Studio, с графическим интерфейсом или в командной строке, например, например: sdkmanager --install "system-images;android-27;google_apis_playstore;x86" . Затем соответственно создайте виртуальное устройство Android (AVD) через графический интерфейс Manager или с Avdmanager, как это: avdmanager create avd -n my_avd_name -k "system-images;android-27;google_apis_playstore;x86" .
Android_emuroot должен взаимодействовать с обоими:
Приведенная ниже схема показывает взаимодействие между всеми элементами:

Android Debug Bridge (ADB) - это инструмент инструментов Android Studio, который позволяет общаться с устройством Android. Сервер ADB - это компонент, который управляет связи между Android_emuroot и демоном ADB, запущенным на устройстве. По умолчанию серверы ADB прослушивают 127.0.0.1 Port 5037 . adb start-server позволяет убедиться, что работает сервер.
Убедитесь, что ваш сервер ADB работает.
Другим требованием использования Android_emuroot является привлечение сервера GDB к вашему AVD при его запусках. Эмулятор, еще один инструмент командной строки Android Studio Toolchain, позволяет запускать AVDS с множеством опций. Среди них: -qemu -s (Shorthang для -qemu -gdb tcp::1234 ), который открывает сервер GDB на порту 1234 TCP.
Используйте эту опцию, чтобы получить доступ к серверу GDB.
Вот простой пример использования эмулятора:
emulator -avd my_avd_name [options] -qemu -s
Таким образом, сервер GDB будет прикреплен к AVD my_avd_name , и Android_emuroot смогут породить свой клиент GDB и выполнить патчи памяти.
Как только ADB Server и GDB -сервер будут выполнены, вы готовы использовать Android_emuroot.
Android_emuroot имеет 3 режима:
single --magic-name NAME : чтобы дать привилегии root только 1 оболочку, приведенная в параметреadbd [--stealth] : дать корневые привилегии всему серверу adbd ; Каждая новая оболочка будет порождена как кореньsetuid --path NAME : Чтобы установить двоичный файл root setUID в файловой системеБолее подробная информация об использовании и внутренних органах инструмента: подробное использование
Android_emuroot был написан Муадом Абухали и Анаисом Гантетом из Airbus-Seclab.
Android_emuroot выпускается под GPLV2.