Android_emuroot هو برنامج نصي Python يسمح بمنح امتيازات الجذر أثناء الطيران إلى القذائف التي تعمل على أجهزة Android الافتراضية التي تستخدم صور المحاكي المقدمة من Google والتي تسمى Google API Playstore ، للمساعدة في عكس المهندسين على التعمق في تحقيقاتهم.
يتطلب Android_Emuroot إطلاق محاكي Google API Playstore مع تمكين خيار QEMU GDB Cub ، ويستخدمه لتغيير بيانات التعريف المخزنة في الذاكرة في هياكل مهمة kernel. الفكرة الرئيسية هي البدء من قذيفة بأقل امتيازات ، ثم العثور على بنية بيانات الاعتماد المرتبطة بها في ذاكرة kernel لاستبدالها بهيكل آخر له أعلى امتيازات.
يعرض تنفيذ تعديل الذاكرة على محاكي Google API Playstore المزايدين التاليين:
يتطلب Android_Emuroot أن يكون لديك بالفعل نظام Android SDK يعمل. يوصى بتثبيت أدوات سطر الأوامر (قابل للتنزيل عبر Android Studio GUI: Tools> Android> SDK Manager> SDK Tools).
Android_emuroot هو نص Python يستخدم مرافق ADB وكذلك مرافق GDB من وحدات Python التالية:
تأكد من أن لديك هذه الوحدات أو تثبيتها عبر PIP: pip3 install -r requirements.txt .
NB: Android_emuroot يدعم Python 2 و Python 3.
اعتمادًا على بنية الأجهزة وإصدار kernel من المحاكي ، يختلف تخطيط الذاكرة لصورة 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) وفقًا لذلك ، عبر واجهة المستخدم الرسومية AVD أو مع 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 Daemon تم إطلاقه على الجهاز. بشكل افتراضي ، تستمع خوادم ADB على 127.0.0.1 Port 5037 . يتيح لك adb start-server التأكد من وجود خادم يعمل.
تأكد من تشغيل خادم ADB الخاص بك.
الشرط الآخر لاستخدام Android_emuroot هو إرفاق خادم GDB بخادم AVD الخاص بك عند تشغيله. يسمح Emulator ، أداة سطر أوامر أخرى في Android Studio Toolchain ، بتشغيل AVDs مع الكثير من الخيارات. من بينها: -qemu -s (Shorthang for -qemu -gdb tcp::1234 ) الذي يفتح خادم GDB على منفذ TCP 1234.
استخدم هذا الخيار للحصول على خادم 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 : لإعطاء امتيازات الجذر إلى قذيفة واحدة فقط في المعلمةadbd [--stealth] : لإعطاء امتيازات الجذر لخادم adbd بأكمله ؛ سيتم أن تولد كل قذيفة جديدة كجذرsetuid --path NAME : لتثبيت ثنائي جذر setuid على نظام الملفاتمزيد من التفاصيل حول الاستخدام والأداة الداخلية: الاستخدام التفصيلي
لقد كتب Android_emuroot من قبل Mouad Abouhali و Anaïs Gantet من Airbus-Seclab.
يتم إصدار Android_emuroot تحت GPLV2.