บทนำ (Overview)
ในปัจจุบัน Android Virtual Device (AVD) ที่มากับ Android Studio ยังไม่มีฟังก์ชันเปิด/ปิดการ Root เครื่องเหมือน Android Emulator ตัวอื่นๆ และ AVD ที่สร้างขึ้นมาจะเป็นแบบ Non-Root โดยบทความนี้จะกล่าวถึงขั้นตอนการ Root AVD โดยใช้ Magisk
บทความโดย
Warut Yantarattanawan และ Warunyou Sunpachit
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
อ้างอิง
- https://github.com/HuskyDG/MagiskOnEmu
- https://github.com/HuskyDG/MagiskOnEmu/wiki/Emulator-that-Magisk-can-work-properly
- https://android.stackexchange.com/questions/177886/what-is-arm-translation-tools
- https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html
- https://developer.android.com/studio/releases/emulator#known_issues_2
- https://github.com/frida/frida/issues/1917
- https://github.com/newbit1/rootAVD
- https://github.com/topjohnwu/magisk-files/tree/canary
- https://github.com/topjohnwu/Magisk/releases
- https://github.com/vvb2060/magisk_files/tree/alpha
- https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck&hl=en&gl=US