Run full iOS 16.5 firmware on Android Devices
안드로이드 기기에서 iOS 16.5 사용자 공간 실행
HackiOS는 POCO X5 Pro와 QEMU에서 XNU 커널과 수정하지 않은 iOS 16.5 사용자 공간을 부팅합니다. 터치, Wi-Fi, 카메라 등 일부 기능이 작동하지만 통신, 충전, App Store와 Apple ID 로그인은 지원하지 않아 일반 ROM이 아닌 연구용 환경입니다.
- 주제
에디터 노트
이 프로젝트의 성과는 일상용 iOS 기기를 만드는 데 있기보다 수정하지 않은 iOS 사용자 공간을 다른 하드웨어에서 부팅하는 데 있습니다. 터치, Wi-Fi, 카메라까지 연결한 구현은 범위가 구체적이지만 Secure Enclave 부재로 Apple ID와 App Store가 막히고 셀룰러와 충전도 작동하지 않습니다. 댓글에서 GrapheneOS와 견준 보안 우려가 나왔고, 다른 개발자는 iOS 16.5가 현재 앱 호환성에 뒤처진다고 지적했습니다. 따라서 지금 확인되는 것은 제한된 환경에서의 운영체제 이식이지, 기존 iPhone을 대체하는 사용 경험이나 보안 수준이 아닙니다. 프로젝트의 연구 성과와 제품으로서의 제약은 분리해서 볼 필요가 있습니다.
AI 요약
안드로이드 기기에서 Apple의 오픈소스 XNU 커널과 iOS 16.5 사용자 공간을 실행하는 프로젝트입니다. XNU는 iOS 16.5에서 쓰인 xnu-8796.121.2이며, 부팅 뒤 launchd, backboardd, SpringBoard와 앱이 올라옵니다. 프로젝트는 EFI 로더와 UEFI 포트, Apple 비공개 드라이버를 대신하는 구성 요소를 만들었습니다. Linux Wi-Fi 드라이버를 XNU에서 쓸 수 있도록 호환 계층도 추가했습니다. iOS 프로그램과 프레임워크, dyld 공유 캐시는 수정하지 않았다고 설명합니다. 대신 커널 드라이버 대체물과 DYLD_INSERT_LIBRARIES로 주입하는 라이브러리가 필요한 동작을 처리합니다.
실행 환경과 구성
지원 환경은 POCO X5 Pro 5G(redwood, Snapdragon 778G)와 QEMU virt의 AArch64입니다. 휴대폰에서는 부트로더 잠금을 해제한 뒤 fastboot boot로 UEFI를 메모리에 올립니다. 시스템 이미지도 RAM으로 전송하므로 기기 저장 공간에 쓰지 않으며 재부팅하면 Android로 돌아옵니다. 단, iOS가 기록하는 데이터는 플래시의 iOS 볼륨에 남길 수 있습니다. 실행 시간은 지정한 초로 제한되고 세션 종료 뒤 커널이 로더로 돌아가 로그를 넘깁니다. 프로젝트는 이를 ROM이 아니라 연구용 벤치라고 부릅니다.
저장소 둘이 프로젝트를 나눠 맡습니다. hackios-xnu-kernel에는 XNU 패치, EFI 로더, UEFI 포트, Wi-Fi 계층과 QEMU 스크립트가 있습니다. 별도 hackios-xnu-userland 저장소에는 초기화 구성, 주입 라이브러리, launchd 작업, APFS 이미지 빌더가 있습니다. Apple 파일은 저장소에 포함하지 않습니다. 사용자가 Apple CDN에서 iOS 16.5 IPSW를 내려받아 로컬에서 필요한 파일을 추출합니다. QEMU 실행에는 Linux x86-64 호스트와 약 12GB의 디스크 공간, 4GB의 여유 RAM이 필요합니다. 휴대폰 실행에는 해당 POCO 기기와 adb, fastboot가 필요하며 GPU, Wi-Fi, 오디오 등에 필요한 펌웨어도 Android에서 직접 추출합니다.
작동 기능과 제약
잠금 화면과 홈 화면, 시스템 제스처, 터치와 멀티터치, 전원·음량 버튼이 작동합니다. 설정, 시계, 캘린더, 사진, 메모, Safari 등의 앱과 날씨·캘린더 위젯도 실행됩니다. Adreno 642L은 Mesa/freedreno를 통해 CoreAnimation용 OpenGL ES를 처리합니다. Wi-Fi 연결과 Safari 웹 접속은 가능하며 프로젝트가 제시한 속도는 55~90Mbit/s입니다. 스피커와 마이크, 카메라 미리보기와 초점, HEIC 사진 촬영도 지원합니다. 최대 8개 CPU 코어를 사용하고 잠금 화면까지 약 20초가 걸린다고 합니다.
셀룰러와 Bluetooth, 커널에서의 충전, 동영상 및 Live Photo 녹화는 작동하지 않습니다. App Store 콘텐츠와 Apple ID 로그인도 지원하지 않습니다. Secure Enclave가 없고 FairPlay 데몬이 종료되기 때문이라고 설명합니다. 앱용 Metal은 개발 중이며 시스템 셰이더 456개 가운데 293개가 Adreno에서 작동한다고 적었습니다. 설치 절차와 빌드 스크립트, 포팅 문서는 저장소에 공개돼 있습니다.
Hacker News 반응
- @sheepscreek — 대단하네요. 정말 좋습니다.
- @Grombobulous — 최근 몇 주 사이 리버스 엔지니어링, 탈옥, 포팅 분야를 보면서 AI가 세상을 끝낼 거라는 생각이 확실히 다른 쪽으로 움직이고 있습니다. Microsoft, Google, Oracle 등이 자기들 소프트웨어를 쓸모없게 만들 기술에 돈을 전부 투자했네요. 로널드 맥도널드의 말처럼, 아주 좋습니다.
- @add-sub-mul-div — AI에 대한 걱정은 사회에 미치는 부정적 외부효과를 모두 따져서 나온 건가요, 아니면 쓸 만한 장난감 프로젝트가 아직 충분히 나오지 않아서였나요?
- @Grombobulous — 제 댓글 전체를 그렇게 진지하게 받아들이라는 뜻은 아닙니다.
- @gruez — GrapheneOS와 달리 아이폰은 부트로더가 잠겨 있습니다. 안드로이드폰에서 만든 이 괴상한 OS는 GrapheneOS보다 보안이 나쁠 가능성이 큽니다.
- @lunar_rover — GrapheneOS는 완전한 업스트림 지원을 받거나 직접 업스트림 역할을 합니다. 비공식 iOS 포트는 둘 다 해당하지 않습니다. Apple만 공격자로 보는 위협 모델이 아니라면 대안이 되지 않습니다.
- @torben-friis — 왜 iOS 16.5인가요? 2023년 버전이잖아요. 성과를 깎아내리려는 건 아니고 궁금합니다.
- @MBCook — 버전이 올라갈수록 보안이 강화됩니다. 그 이후 버전이 특별히 더 어려워졌을 수도 있겠네요.
- @runjake — 현재 A·B급 iOS 앱 가운데 상당수는 이렇게 오래된 iOS에서 실행되지 않을 겁니다. 그래도 연구 목적에서는 큰 진전입니다.
- @busymom0 — iOS 개발자입니다. Apple이 현재 앱 제출을 허용하는 최저 버전은 iOS 15입니다. 이 버전은 대부분의 앱에 꽤 오래됐습니다.
- @drnick1 — 가능하다는 점은 흥미롭지만 왜 Android 기기에서 iOS를 실행하고 싶어 할까요? Graphene 같은 자유로운 Android 배포판을 Apple 하드웨어에서 실행하는 편이 더 바람직합니다.
- @Wowfunhappy — 이 프로젝트로 완전히 탈옥된 iOS를 쓸 수 있다는 점은 있습니다. 커널을 수정하고 여러 가지를 시도할 수 있는데 iPhone에서는 그렇게 할 수 없습니다.
- @gruez — iMessage 같은 서비스는 기기 증명을 요구할 가능성이 있습니다. Beeper Mini도 그 문제로 막혔습니다.
- @bigwheels — 이런 시연은 왜 늘 iOS 16에서 멈추나요? iOS 17에서 무엇이 달라졌나요?
- @LoganDark — Secure Page Table Monitor와 Trusted Execution Monitor입니다.
- @SoKamil — 연구용 벤치라 세션이 정해진 시간 뒤 끝나고 커널이 로더로 돌아가 로그를 넘긴다는 설명이 궁금합니다.
- @bitpush — 사용자가 기기를 쓸 수 있는 시간이 정해져 있고 그 뒤 종료된다는 뜻인가요?
- @ChocolateGod — 워치독일 수 있습니다. 정기적으로 올바른 신호를 보내지 않으면 시스템이 충돌했다고 판단할 수 있습니다.
원문: Hacker News / 번역·요약: Trawling