Android_emuroot는 Python 스크립트로, Google API PlayStore 라는 Google 제공 에뮬레이터 이미지를 사용하는 Android 가상 머신에서 실행되는 쉘에 루트 권한을 즉시 허용 하여 리버스 엔지니어가 조사에 더 깊이 참여할 수 있도록 도와줍니다.
Android_emuroot는 Google API PlayStore 에뮬레이터를 QEMU GDB Stub 옵션을 사용하여 시작해야하며이를 사용하여 커널 작업 구조에 메모리에 저장된 프로세스 메타 데이터를 변경합니다. 주요 아이디어는 가장 낮은 권한을 가진 쉘에서 시작한 다음 커널 메모리에서 관련 자격 증명 구조를 찾아서 가장 높은 권한을 가진 다른 구조로 대체하는 것입니다.
Google API PlayStore 에뮬레이터 에서이 메모리 수정을 구현하면 다음 두 가지 장점이 있습니다.
Android_emuroot에는 이미 작동하는 Android SDK가 있어야합니다. 명령 줄 도구 설치가 권장됩니다 (Android Studio GUI : Tools> Android> SDK 관리자> SDK 도구를 통해 다운로드 할 수 있습니다.
Android_emuroot는 ADB 시설과 다음 두 파이썬 모듈의 GDB 시설을 사용하는 파이썬 스크립트입니다.
이러한 모듈이 있는지 확인하거나 pip3 install -r requirements.txt 통해 설치하십시오.
NB : Android_emuroot는 Python 2 및 Python 3을 지원합니다.
하드웨어 아키텍처와 에뮬레이터의 커널 버전에 따라 관련 QEMU 이미지의 메모리 레이아웃은 다양합니다. 따라서 Android_emuroot에 의해 구현 된 메모리 패치의 위치도 다양합니다.
현재 Android_emuroot는 다음 버전의 에뮬레이터를 지원합니다.
| 안드로이드 버전 | API | 건축학 | 핵심 | 짓다 |
|---|---|---|---|---|
| 안드로이드 7.0 | 24 | x86 | 3.10 | Google-Api-Playstore |
| 안드로이드 7.1.1 | 25 | x86 | 3.10 | Google-Api-Playstore |
| 안드로이드 8.0 | 26 | x86 | 3.18 | Google-Api-Playstore |
| 안드로이드 8.1 | 27 | x86 | 3.18 | Google-Api-Playstore |
루팅하려는 AVD 가이 목록의 하나의 에뮬레이터를 기반으로하는지 확인하십시오.
NB : 에뮬레이터 sdkmanager --install "system-images;android-27;google_apis_playstore;x86" GUI 또는 명령 줄과 같은 Android Studio 도구 체인의 도구 인 SDKManager를 통해 다운로드 할 수 있습니다. 그런 다음 AVD 관리자 GUI를 통해 또는 AVDManager를 통해 Android Virtual Device (AVD)를 작성하십시오. avdmanager create avd -n my_avd_name -k "system-images;android-27;google_apis_playstore;x86" .
Android_emuroot는 두 가지와 상호 작용해야합니다.
아래 체계는 모든 요소 간의 상호 작용을 보여줍니다.

Android Debug Bridge (ADB)는 Android 장치와 통신 할 수있는 Android Studio Toolchain의 명령 줄 도구입니다. ADB 서버는 Android_emuroot와 장치에서 시작된 ADB 데몬 간의 통신을 관리하는 구성 요소입니다. 기본적으로 ADB 서버는 127.0.0.1 포트 5037 에서 청취합니다. adb start-server 사용하면 서버가 실행되는지 확인할 수 있습니다.
ADB 서버가 실행 중인지 확인하십시오.
Android_emuroot를 사용하는 다른 요구 사항은 GDB 서버를 AVD에 첨부 할 때 AVD에 첨부하는 것입니다. Android Studio Toolchain의 또 다른 명령 줄 도구 인 Emulator를 사용하면 많은 옵션이있는 AVDS를 시작할 수 있습니다. 그중 : -qemu -s ( -qemu -gdb tcp::1234 용 Shorthang) TCP 포트 1234에서 GDB 서버를 엽니 다.
이 옵션을 사용하여 GDB 서버를 사용할 수 있습니다.
에뮬레이터 사용의 간단한 예는 다음과 같습니다.
emulator -avd my_avd_name [options] -qemu -s
이런 식으로 GDB 서버는 AVD my_avd_name 에 첨부되며 Android_emuroot는 GDB 클라이언트를 생성하고 메모리 패치를 수행 할 수 있습니다.
ADB 서버와 GDB 서버가 모두 작동하면 Android_emuroot를 사용할 준비가되었습니다.
Android_emuroot에는 3 가지 모드가 있습니다.
single --magic-name NAME : 매개 변수에 제공된 1 개의 쉘에만 루트 권한을 부여합니다.adbd [--stealth] : 전체 adbd 서버에 루트 권한을 부여합니다. 각각의 새로운 껍질은 뿌리로 생성됩니다setuid --path NAME : 파일 시스템에 setuid 루트 바이너리를 설치하려면사용 및 도구 내부에 대한 자세한 내용 : 자세한 사용
Android_emuroot는 Airbus-Seclab에서 Mouad Abouhali와 Anaïs Gantet에 의해 작성되었습니다.
Android_emuroot는 GPLV2에 따라 출시됩니다.