一键注册,加入手机圈
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
看你对「装安卓系统」的定义是什么了,目前,Corelium的Sandcastle项目已经实现了在搭载A10芯片的iPhone7/iPhone7 Plus引导启动Android10并启动到桌面,但iPhone的摄像头、指纹识别、声音、GPU等都无法驱动,所以拿来当日常用机肯定是不行的。
Sandcastle的Android设备驱动表,iPhone7/7p由于兼容大部分硬件才可以启动
图源:arstechnica.com
有意思的是这个项目的开发人员David Wang和Chris Wade在十年前就启动了一个将Linux/Android移植到iPhone的项目,并在当时成功在第一代iPhone上启动了Android:
图源: projectsandcastle.org
下面是个人的一些结论,仅供参考:
如果你想快速阅读:
- Sandcastle项目基于checkm8漏洞,至于如何实现在iPhone引导第三方操作系统的可以参考这篇文章:Gh0u1L5:iPhone史诗级漏洞checkm8攻击原理浅析
- 虽然说A11以下设备拥有checkm8漏洞,但引导启动并进入另一个操作系统要涉及到很多方面,例如设备驱动,特别是引导进入一个复杂的、要调用许多东西的OS。
- iPhone里的绝大多数硬件实现都是闭源的,因此研究它们/为它们开发驱动程序需要付出不少时间和精力。
- 就目前情况来看,要在iPhone7/7plus或更多iOS设备上「完美运行」Android(这里的完美定义是指能正常重启,且手机所有硬件功能正常运作)是一件遥不可及的事情,因此对此项目的期望请不要太高。
这是个人的部分总结:
- Sandcastle项目实现的第一个驱动程序是UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)在Android里简称serial ports[1]。像手机里的一些「外围设备」,例如GPS、显示屏、XBee等通常依赖它。iPhone的UART和三星S3C系列SOC的部分传统设计类似。[2]
- iPhone的SPI控制器(SPI controller)也和UART一样,是从三星「启发(inspired)」的,但Linux Kernel Tree里的驱动不支持中断驱动传输(interrupt driven transfers),于是Sandcastle团队自己实现了驱动。
- 一般的aarch64芯片的中断控制器(Interrupt controller)一般都遵守ARM GIC标准,但A系列SOC是一个称为AIC(Apple Interrupt Controller)的自研的非标准中断控制器(non-standard interrupt controller)
- ..........
可以参考Sandcastle的The Making Of 页面:The Making Of — Project Sandcastle,开发人员基本都对Sandcastle开发过程中的技术问题做了总结。
参考
- ^https://developer.android.com/things/sdk/pio/uart
- ^原文:Of course, the first thing you need to do is print, so our first driver was for the uniquely modified UART. It shares some heritage with UARTs in the Samsung S3C series SoCs
----------------------------- |