Android_emuroot เป็นสคริปต์ Python ที่อนุญาต ให้มีสิทธิ์รูท ในการบินไปยังเชลล์ที่ทำงานบนเครื่องเสมือน Android ที่ใช้ภาพจำลองของ Google ที่ให้ไว้ใน Google ที่เรียกว่า Google API Playstore เพื่อช่วยให้วิศวกรย้อนกลับไปสู่การสืบสวนของพวกเขา
Android_emuroot ต้องการให้ Google API Playstore Emulator เปิดตัวด้วยตัวเลือก QEMU GDB Stub และใช้เพื่อปรับเปลี่ยนเมตากระบวนการที่เก็บไว้ในหน่วยความจำในโครงสร้างงานเคอร์เนล แนวคิดหลักคือการเริ่มต้นจากเชลล์ที่มีสิทธิ์ต่ำสุดจากนั้นค้นหาโครงสร้างข้อมูลรับรองที่เกี่ยวข้องในหน่วยความจำเคอร์เนลเพื่อแทนที่ด้วยโครงสร้างอื่นที่มีสิทธิ์สูงสุด
การใช้การปรับเปลี่ยนหน่วยความจำนี้บน Google API Playstore Emulator นำเสนอข้อดีสองประการต่อไปนี้:
Android_emuroot ต้องมี Android SDK ที่ใช้งานได้แล้ว แนะนำให้ติดตั้งเครื่องมือบรรทัดคำสั่ง (สามารถดาวน์โหลดได้ผ่าน Android Studio GUI: เครื่องมือ> Android> SDK Manager> เครื่องมือ SDK)
Android_emuroot เป็นสคริปต์ Python ที่ใช้สิ่งอำนวยความสะดวก ADB เช่นเดียวกับสิ่งอำนวยความสะดวก GDB จากโมดูลของ Python ทั้งสองต่อไปนี้:
ตรวจสอบให้แน่ใจว่าคุณมีโมดูลเหล่านี้หรือติดตั้งผ่าน PIP: pip3 install -r requirements.txt
NB: Android_emuroot รองรับ Python 2 และ Python 3
ขึ้นอยู่กับสถาปัตยกรรมฮาร์ดแวร์และรุ่นเคอร์เนลของ Emulator เค้าโครงหน่วยความจำของภาพ QEMU ที่เกี่ยวข้องจะแตกต่างกันไป ดังนั้นตำแหน่งของแพตช์หน่วยความจำที่ใช้โดย Android_emuroot แตกต่างกันไปเช่นกัน
สำหรับตอนนี้ Android_emuroot รองรับ Emulators เวอร์ชันต่อไปนี้:
| เวอร์ชัน 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: Emulators สามารถดาวน์โหลดได้ผ่าน SDKManager เครื่องมือจาก Android Studio Toolchain พร้อม GUI หรือในบรรทัดคำสั่งเช่นนี้: sdkmanager --install "system-images;android-27;google_apis_playstore;x86" จากนั้นสร้างอุปกรณ์เสมือนจริงของ Android (AVD) ผ่าน AVD Manager GUI หรือ 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 Toolchain ที่ให้การสื่อสารกับอุปกรณ์ Android เซิร์ฟเวอร์ ADB เป็นส่วนประกอบที่จัดการการสื่อสารระหว่าง Android_emuroot และ ADB daemon ที่เปิดตัวบนอุปกรณ์ โดยค่าเริ่มต้นเซิร์ฟเวอร์ ADB ฟังบน 127.0.0.1 พอร์ต 5037 adb start-server ช่วยให้คุณมั่นใจได้ว่ามีเซิร์ฟเวอร์ทำงานอยู่
ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ ADB ของคุณกำลังทำงานอยู่
ข้อกำหนดอื่น ๆ ในการใช้ Android_emuroot คือการแนบเซิร์ฟเวอร์ GDB เข้ากับ AVD ของคุณเมื่อเปิดตัว Emulator เครื่องมือบรรทัดคำสั่งอื่นของ Android Studio Toolchain อนุญาตให้เปิด AVDS ด้วยตัวเลือกมากมาย ในหมู่พวกเขา: -qemu -s (ชอร์ตังสำหรับ -qemu -gdb tcp::1234 ) ซึ่งเปิดเซิร์ฟเวอร์ GDB บนพอร์ต TCP 1234
ใช้ตัวเลือกนี้เพื่อให้ได้เซิร์ฟเวอร์ GDB
นี่คือตัวอย่างง่ายๆของการใช้งานของ Emulator:
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 root binary บนระบบไฟล์รายละเอียดเพิ่มเติมเกี่ยวกับการใช้งานและเครื่องมือภายใน: การใช้อย่างละเอียด
Android_emuroot เขียนโดย Mouad Abouhali และAnaïs Gantet จาก Airbus-Seclab
Android_emuroot เปิดตัวภายใต้ GPLV2