Android_emuroot é um script python que permite conceder privilégios de raiz em tempo real para conchas em execução em máquinas virtuais do Android que usam imagens de emulador fornecidas pelo Google chamado Google API Playstore , para ajudar a reverter os engenheiros a se aprofundarem em suas investigações.
Android_emuroot exige que o emulador do Google API Playstore seja lançado com a opção QEMU GDB Stub ativada e a usa para alterar os metadados do processo armazenados na memória nas estruturas de tarefas do kernel. A idéia principal é começar de um shell com os mais baixos privilégios e, em seguida, encontrar sua estrutura de credenciais associada na memória do kernel para substituí -la por outra estrutura com os mais altos privilégios.
A implementação dessa modificação de memória em um emulador do Google API Playstore apresenta as duas vantagens a seguir:
Android_emuroot requer já ter um Android SDK em funcionamento. A instalação das ferramentas de linha de comando é recomendada (download através da GUI do Android Studio: Ferramentas> Android> SDK Manager> SDK Tools).
Android_emuroot é um script python que usa as instalações do ADB, bem como as instalações do GDB dos dois módulos seguintes do Python:
Certifique -se de ter esses módulos ou instalá -los via pip: pip3 install -r requirements.txt .
NB: Android_emuroot suporta Python 2 e Python 3.
Dependendo da arquitetura de hardware e da versão do kernel do emulador, o layout da memória da imagem qemu relacionada varia. Assim, a localização dos patches de memória implementada por Android_emuroot também varia.
Por enquanto, Android_emuroot suporta as seguintes versões dos emuladores:
| Versão Android | API | Arquitetura | Kernel | Construir |
|---|---|---|---|---|
| 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 |
Certifique -se de que o AVD que você deseja enraizar seja baseado em um emulador desta lista.
NB: Os emuladores podem ser baixados via SDKManager, uma ferramenta do Android Studio Toolchain, com a GUI ou na linha de comando, por exemplo, como este: sdkmanager --install "system-images;android-27;google_apis_playstore;x86" . Em seguida, crie um dispositivo virtual do Android (AVD) de acordo, através da GUI do AVD Manager ou com o AVDMANAGER como o seguinte: avdmanager create avd -n my_avd_name -k "system-images;android-27;google_apis_playstore;x86" .
Android_emuroot precisa interagir com os dois:
O esquema abaixo mostra as interações entre todos os elementos:

O Android Debug Bridge (ADB) é uma ferramenta de linha de comando da Chain de ferramentas do Android Studio que permite se comunicar com um dispositivo Android. O servidor ADB é o componente que gerencia a comunicação entre Android_emuroot e o daemon ADB lançado no dispositivo. Por padrão, os servidores ADB ouvem em 127.0.0.1 porta 5037 . adb start-server permite garantir que haja um servidor em execução.
Certifique -se de que seu servidor ADB esteja em execução.
O outro requisito para usar Android_emuroot é anexar um servidor GDB ao seu AVD ao iniciá -lo. O Emulator, outra ferramenta de linha de comando do Android Studio Toolchain, permite iniciar AVDs com muitas opções. Entre eles: -qemu -s (shorthang para -qemu -gdb tcp::1234 ) que abre um servidor GDB na porta TCP 1234.
Use esta opção para obter um servidor GDB disponível.
Aqui está um exemplo simples do uso do Emulador:
emulator -avd my_avd_name [options] -qemu -s
Dessa forma, um servidor GDB será anexado ao AVD my_avd_name e Android_emuroot poderão gerar seu cliente GDB e executar os patches de memória.
Depois que o servidor ADB e o GDB Server estiverem operacionais, você estará pronto para usar Android_emuroot.
Android_emuroot tem 3 modos:
single --magic-name NAME : Para dar privilégios de raiz a apenas 1 shell fornecido no parâmetroadbd [--stealth] : dar privilégios de raiz a todo o servidor adbd ; Cada nova concha será gerada como raizsetuid --path NAME : Para instalar um binário de root setuid no sistema de arquivosMais detalhes sobre o uso e as ferramentas internas: uso detalhado
Android_emuroot foi escrito por Mouad Abouhali e Anaïs Gantet da Airbus-Seclab.
Android_emuroot é liberado no GPLV2.