การทำ iOS เสมือนบน Apple Silicon
Part 0: ดินแดนที่ยังไม่รู้จัก?
- โปรเจ็กต์ vma2pwn: โปรเจ็กต์สำหรับสร้างสายโซ่บูต vma2 macOS ที่ปรับแก้ได้สำหรับเครื่องเสมือนแบบ guest บน macOS ซึ่งเป็นงานเตรียมการล่วงหน้าสำหรับการทำ iOS เสมือน
- ความเป็นไปได้ของการทำ iOS เสมือน: เมื่อมีการเปลี่ยนผ่านไปสู่ Apple Silicon และการเปิดตัว Mac Catalyst ทำให้ระบบปฏิบัติการ iOS และ macOS เข้าใกล้กันมากขึ้น จึงเกิดคำถามว่าสามารถทำ iOS ให้เป็นเครื่องเสมือนได้หรือไม่
- งานวิจัยที่มีอยู่เดิม: กล่าวถึงงานที่เกี่ยวข้อง เช่น ผลิตภัณฑ์ virtual iPhone cloud ของ Corellium, qemu-t8030 และบล็อกของ Zhuowei Zhang
Part I: เริ่มต้น + การค้นพบใหม่
- ความสามารถของสแตก Virtualization ของ Apple: พบความสามารถในการเซ็นข้อมูลตามอำเภอใจสำหรับเครื่องเสมือน
- ความจำเป็นของ vma2pwn ลดลง: สามารถตั้งค่าอุปกรณ์เสมือนให้อยู่ในโหมด "secure" และ "non-production" ได้ผ่านการเรียก
_setProductionModeEnabled(false)
- กลยุทธ์การรัน iOS: นำสายโซ่บูตของ macOS 12.0.1 มาใช้ซ้ำ และแทนที่ด้วยอิมเมจระบบ iOS 15.0.2 เพื่อลดการแก้ไขในกระบวนการเริ่มต้นระบบให้น้อยที่สุด
Part II: นรกแห่งแพตช์
- แพตช์เคอร์เนล: จำเป็นต้องมีแพตช์เพื่อข้ามการตรวจสอบลายเซ็น และแก้ไขให้ข้ามการตรวจสอบ
PLATFORM_IOS เพื่อรันไบนารีของ iOS
- ปัญหา system keybag: เนื่องจาก system keybag ไม่เข้ากัน จึงมีข้อความ "ปัดขึ้นเพื่ออัปเกรด" ปรากฏใน PreBoard.app
- ขนาดโครงสร้าง IOMFB ไม่ตรงกัน: แก้ปัญหา kernel panic ที่เกิดจากขนาดไม่ตรงกันระหว่างเฟรมเวิร์กระบบของ iOS กับเคอร์เนลของ macOS
- แพตช์ระบบ: จำเป็นต้องแพตช์ทั้ง ramdisk สำหรับการกู้คืนและไฟล์ระบบ iOS และหากรันในสถานะที่ไม่ได้เซ็นลายเซ็น ระบบจะถูกปิดการทำงาน
Part III: อนาคต
- การแก้ปัญหา system keybag: ยังต้องการแพตช์เพิ่มเติมและความเข้าใจที่มากขึ้นเกี่ยวกับระบบ iOS และเคอร์เนล
- ความสามารถด้านการสัมผัส: ยังไม่ยืนยันว่าฟังก์ชันสัมผัสทำงานหรือไม่ และสามารถส่งเหตุการณ์สัมผัสได้โดยใช้ private API ของ
Virtualization.framework
สรุปโดย GN⁺
- บทความนี้นำเสนอการสำรวจเชิงเทคนิคเชิงลึกเกี่ยวกับวิธีทำ iOS ให้เป็นเครื่องเสมือนบน Apple Silicon
- เมื่อการผสานรวมระหว่าง iOS และ macOS เร่งตัวมากขึ้น โปรเจ็กต์นี้จึงมีบทบาทสำคัญในการสำรวจการทำงานร่วมกันระหว่างสองระบบปฏิบัติการ
- โปรเจ็กต์นี้ต้องใช้เวลาและความพยายามอย่างมาก และยังต้องการการวิจัยและพัฒนาเพิ่มเติม
- โปรเจ็กต์ที่มีความสามารถคล้ายกันมีผลิตภัณฑ์ virtual iPhone cloud ของ Corellium
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
Corellium ชนะคดีความ ทำให้สามารถให้เช่า iOS Cloud VM เพื่อวัตถุประสงค์ด้านการวิจัยความปลอดภัยได้
หวังว่าโจทย์ถัดไปจะเป็นการหาวิธีติดตั้ง macOS ลงบน iPad
รู้สึกว่าเหตุผลที่ Apple ไม่ทำ Simulator ให้เป็น Emulator เป็นเพราะไม่ต้องการให้ผู้คนเจาะลึกถึงพื้นฐานของ iOS
จากโปรไฟล์ GitHub ของผู้เขียน ดูเหมือนว่าในฐานะบัณฑิตจบใหม่สาขาวิทยาการคอมพิวเตอร์ เขาทำผลงานที่น่าประทับใจมาก
คนที่สร้าง qemu-t8030 เคยรัน springboard ได้สำเร็จ แต่ไม่ได้เผยแพร่โค้ด หากความคืบหน้านี้สามารถนำมารวมกับโปรเจ็กต์ปัจจุบันได้ก็คงยอดเยี่ยมมาก
แม้จะเป็นคนละประเด็นกันเล็กน้อย แต่ก็สงสัยว่ามีใคร virtualize ARM macOS บน x86-64 ได้บ้างหรือยัง
Apple มี iOS Simulator ให้ใช้อยู่แล้วใน Xcode เลยสงสัยว่าโปรเจ็กต์นี้มีข้อได้เปรียบอะไรเมื่อเทียบกับสิ่งที่ Apple มีให้
การพูดคุยเกี่ยวกับหัวข้อนี้กำลังเกิดขึ้นในเซิร์ฟเวอร์ Discord ของ nick's funny device emporium