How to root Android Studio Emulator (AVD) with Magisk

บทนำ (Overview)

ในปัจจุบัน Android Virtual Device (AVD) ที่มากับ Android Studio ยังไม่มีฟังก์ชันเปิด/ปิดการ Root เครื่องเหมือน Android Emulator ตัวอื่นๆ และ AVD ที่สร้างขึ้นมาจะเป็นแบบ Non-Root โดยบทความนี้จะกล่าวถึงขั้นตอนการ Root AVD โดยใช้ Magisk

บทความโดย
Warut Yantarattanawan
Cybersecurity Consultant

Note: นอกเหนือจาก AVD ยังมี Android Emulator ตัวอื่นๆที่รองรับ Magisk เช่นกัน Emulator that Magisk can work properly

ขั้นตอน (Steps)

1. ติดตั้ง Android Studio

สามารถติดตามเพิ่มเติมได้ที่ How to install Android Studio

2. สร้าง AVD

สามารถติดตามเพิ่มเติมได้ที่ How to start Android Emulator (AVD)

ในขั้นตอนการเลือกรูปแบบเครื่อง Android แนะนำให้เลือกแบบที่มี Play Store เผื่อในอนาคตเรามีความต้องการใช้ Play Store เพื่อดาวน์โหลดหรืออัพเดต Application หรือบาง Application จะไม่สามารถใช้งานได้ หากไม่มี Play Store เป็นต้น

ในขั้นตอนการเลือก Android Image ให้เราจดค่าต่างๆ ไม่ว่าจะเป็น Android API Level, ABI Android Version เพื่อนำไปเลือก Magisk Release ในขั้นตอนภายหลัง หรือเลือก Frida Server Version ในบทความถัดไป

ในบทความนี้เราจะเลือกใช้ Android 11.0 (API Level 30) x86 เนื่องจากเป็น Version ที่รองรับ ARM Application และสามารถใช้งาน Frida Server ได้

Note: Android Image ที่เป็น Android 9 (API Level 28) หรือตั้งแต่ Android 11 (API Level 30) เป็นต้นไป จะมี ARM Translation มาพร้อมกับ Image ทำให้เราสามารถติดตั้งและใช้งาน ARM Application ได้เลย Run ARM apps on the Android Emulator

Known issues สำหรับ Android 11 x86 และ x86_64 คือจะไม่สามารถ Run บาง Binary ที่เป็น ARMv7 ได้ ต้อง Build Binary เป็น ARM64 แทน จึงจะสามารถ Run ได้

ในขณะที่ผู้เขียนทำการเขียนบทความนี้ Frida Server ยังไม่สามารถใช้งานได้กับ Android >= 12 ใน AVD Frida broken on Android 12 (emulators only?), and the error told me to file a bug report

3. ดาวน์โหลด rootAVD tool

4. ทำการแตกไฟล์ rootAVD-master.zip

จากนั้นเข้าไปที่โฟลเดอร์ rootAVD-master จะพบว่ามีไฟล์ Magisk.zip อยู่ดังภาพด้านล่าง ซึ่งในขั้นตอนถัดไปจะเป็นการหา Magisk Release ที่เข้ากันได้กับ Android Image ที่เลือกไว้ในขั้นตอนก่อนหน้านี้ เพื่อนำมาแทนที่ไฟล์ Magisk.zip เดิม

5. ตรวจสอบ Magisk Release ที่เข้ากันได้

ตรวจสอบ Magisk Release ที่เข้ากันได้กับ Android Image ที่เลือกไว้ในบริเวณด้านล่างของหน้าเว็บ rootAVD Tool ในบทความนี้เราจะเลือก Canary Release เนื่องจากเป็น Release ที่เข้ากันได้กับ Android หลาย Version มากกว่า Stable Release

6. ดาวน์โหลด Magisk Canary Release

https://github.com/topjohnwu/magisk-files/tree/canary

Note: ในกรณีที่ผู้อ่านต้องการใช้ Magisk Release อื่น สามารถดาวน์โหลดได้ที่
Magisk Stable Release
Magisk Alpha Release

7. เปลี่ยนชื่อไฟล์ Magisk ที่ดาวน์โหลดมา

หลังจากดาวน์โหลด Magisk Canary Release ที่เป็นไฟล์ app-debug.apk เสร็จแล้ว ให้เปลี่ยนชื่อไฟล์เป็น Magisk.zip แล้วนำไปวางทับไฟล์ Magisk.zip เดิมที่โฟลเดอร์ rootAVD-master

8. เพิ่ม Path ของ ADB

เนื่องจาก rootAVD Tool จะมีการเรียกใช้งาน ADB.exe จึงจำเป็นต้องเพิ่ม Path ของ ADB.exe เข้าไปยัง PATH Environment ของ Windows ก่อน Run rootAVD.bat

คลิกขวาที่ This PC > Properties > Advanced system settings 

เลือก Environment Variables

ตรง System variables เลือก Path Variable จากนั้นกด Edit

เลือก New และใส่ Path ดังต่อไปนี้หากติดตั้ง Android Studio แบบ Default Path

%LOCALAPPDATA%\Android\Sdk\platform-tools

9. Run rootAVD.bat

ก่อนที่จะ Run rootAVD.bat ตรวจสอบให้แน่ใจว่า AVD นั้นเปิดอยู่ ในกรณีที่ติดตั้ง Android Studio แบบ Default Path สามารถใช้คำสั่งต่อไปนี้ในการ Run rootAVD.bat ได้

rootAVD.bat %LOCALAPPDATA%\Android\Sdk\system-images\android-31\google_apis_playstore\x86_64\ramdisk.img

Note: ในกรณีที่ AVD ออก Internet ได้ เราสามารถเลือก Magisk Release ขณะ Run rootAVD Tool ได้ (ตรงจุดนี้จะต้องรีบเลือกหน่อย เพราะว่า Tool ให้เวลาเลือกแค่ 5 วิ หรือจะไปแก้ Script เพื่อเพิ่มเวลาก็ได้) โดยค่า Default ของ Tool จะเลือก Magisk Release ที่เป็น [1] Local ก็คือไฟล์ Magisk.zip ที่เรานำไปวางในโฟลเดอร์ rootAVD ก่อนหน้านี้นั่นเอง

เหตุผลที่ผู้เขียนแนะนำให้ดาวน์โหลด Magisk Release ที่เราต้องการ แล้วทำเป็นไฟล์ Local Magisk.zip ไปวางในโฟลเดอร์ rootAVD เพราะว่าขณะ Run rootAVD Tool นั้น AVD ของผู้อ่านอาจจะออก Internet ไม่ได้ หรืออาจะมีปัญหาระหว่างดาวน์โหลดไฟล์ Magisk

ในกรณีที่ Run rootAVD Tool ไม่สำเร็จ ให้ Restore ramdisk.img โดยใช้คำสั่งต่อไปนี้ (Default Path)

rootAVD.bat %LOCALAPPDATA%\Android\Sdk\system-images\android-31\google_apis_playstore\x86_64\ramdisk.img restore

10. เปิด AVD ขึ้นใหม่อีกครั้ง

หลังจาก Run rootAVD.bat เสร็จแล้ว AVD จะถูกปิดไป ให้เปิด AVD ขึ้นมาใหม่อีกครั้ง โดยเปิด

 Android Studio > More Actions > Virtual Device Manager > Play Icon

Note: หากเปิด AVD แล้วพบ Error ดังภาพด้านล่าง ให้เปิด Task Manager ขึ้นมาและ End Task ที่ชื่อว่า qemu-system-x86_64.exe

11. ตรวจสอบว่า rootAVD Tool ได้ทำการติดตั้ง Magisk

ตรวจสอบว่า rootAVD Tool ได้ทำการติดตั้ง Magisk เรียบร้อยแล้ว โดยการเปิด Magisk Application ขึ้นมาจะพบกับหน้าต่าง Requires Additional Setup ให้กด OK แล้ว AVD จะทำการ Restart

Note: ในกรณีที่เปิด Magisk Application แล้วไม่ขึ้นดังภาพด้านบน อาจจะเป็นเพราะว่าการ Run rootAVD Tool นั้นไม่สำเร็จ ให้ทำการ Restore ramdisk.img แล้ว Run rootAVD Tool อีกครั้งหนึ่ง

12. ตรวจสอบว่า AVD ได้ถูก Root สำเร็จแล้ว

ตรวจสอบว่า AVD ได้ถูก Root สำเร็จแล้วโดยใช้ Root Checker Application เปิด Root Checker Application ขึ้นมาแล้วกด Verify Root > Grant หาก Application ขึ้นคำว่า Congratulations! แปลว่า AVD ได้ถูก Root เรียบร้อยแล้ว

Note: Android Emulator หลายๆตัวในปัจจุบัน รวมทั้ง AVD สามารถติดตั้งไฟล์ .apk ได้อย่างง่ายๆ โดยการ Drag & Drop ไฟล์ .apk

อ้างอิง