TECH 으로 돌아가기
TECH HACKER NEWS 7분 읽기 34 READS

안드로이드 폰에서 iOS 16.5 커널을 부팅하다: HackiOS 실험이 보여준 것

안드로이드 폰에서 iOS 16.5 커널을 부팅하다: HackiOS 실험이 보여준 것
SOURCE IMAGE · HACKER NEWS

애플의 iOS가 애플 하드웨어 밖에서 돌아가는 일은 원칙적으로 봉쇄돼 있다. 부트로더부터 커널, 드라이버, 유저 공간에 이르기까지 수직 통합된 생태계가 그 전제이기 때문이다. 그런데 'OOSEX GANG'이라는 연구팀이 공개한 HackiOS 프로젝트는 그 전제를 정면으로 건드린다. 이들은 애플이 오픈소스로 공개한 XNU 커널(버전 xnu-8796.121.2, iOS 16.5에 탑재된 그 커널)을 안드로이드 스마트폰 하드웨어 위에서 부팅시키고, 그 위에서 수정되지 않은 iOS 16.5 유저 공간을 그대로 구동하는 데 성공했다고 밝혔다. launchd가 뜨고 backboardd와 SpringBoard가 올라와 앱까지 실행되는, iOS의 정상 부팅 경로가 타사 하드웨어에서 재현된 셈이다.

애플 파일 없이 iOS를 올리는 구조

이 프로젝트의 핵심은 '무엇을 가져오지 않았는가'에 있다. 저장소 어디에도 애플의 바이너리는 포함돼 있지 않다. 대신 ios165/fetch.sh 스크립트가 애플 자체 CDN에서 iOS 16.5 IPSW 펌웨어를 사용자의 PC로 내려받아 필요한 부분을 그 자리에서 추출한다. 즉 시스템 이미지는 사용자 본인이 애플의 공식 배포 파일로부터 로컬에서 만들어내고, HackiOS는 그것을 부팅시키는 도구와 커널·로더만 제공하는 구조다. 이는 저작권과 라이선스 리스크를 설계 차원에서 회피하려는 선택으로 읽힌다. 프로젝트 측도 자신들이 애플과 아무런 제휴·승인 관계가 없는 독립 연구임을 분명히 하고 있다.

애플이 공개한 것은 XNU 커널뿐, 하드웨어를 다루는 드라이버 대부분은 비공개 바이너리다. HackiOS는 이 빈자리를 자체 EFI 로더, 애플 비공개 드라이버를 대체하는 자체 드라이버, UEFI 포팅, 그리고 호환 계층 위에서 동작하는 리눅스 Wi-Fi 드라이버로 메웠다. 특히 주목할 만한 접근은 iOS의 프로그램과 프레임워크, dyld 공유 캐시를 단 1바이트도 수정하지 않는다는 점이다. 유저 공간이 기대하는 기능 중 빠진 부분은 커널 레벨의 드라이버 대체물이 처리하거나, 커널이 DYLD_INSERT_LIBRARIES(kern.exec_inject) 방식으로 주입하는 라이브러리가 메운다. 원본을 건드리지 않고 바깥에서 결핍을 보완하는 방식이어서, 분석과 재현의 투명성 면에서 의미가 있다.

ROM이 아니라 '연구용 벤치'

오해하지 말아야 할 대목은 이것이 상시 사용 가능한 커스텀 롬이 아니라는 점이다. 프로젝트는 스스로를 '연구용 벤치(research bench)'로 규정한다. 한 세션은 정해진 초 단위 시간 동안만 유지되고, 그 뒤 커널은 로더로 제어를 반환하며 로그를 넘긴다. 실제로 폰 화면에 잠금 화면이 뜨기까지는 2~3분이 걸린다고 한다. 공개된 사진에는 Adreno GPU가 실제로 화면을 그리는(gpu=1) 장면이 담겼고, GL과 REST 경로가 활성화된 세션 기록도 제시됐다. 조작용 ./xl 명령은 로그 확인, 화면·소리 녹화, 카메라 프레임 캡처, 상태 조회, 중지 등 세션을 관찰하기 위한 기능들을 제공한다.

재현 조건과 실무적 의미

따라 해보려는 사람에게 요구되는 환경은 구체적이다. 빌드에는 리눅스 x86-64와 약 12GB의 여유 디스크, 4GB의 여유 RAM이 필요하고, 실행 대상 기기는 부트로더가 잠금 해제된 POCO X5 Pro 5G(코드명 redwood)로 특정돼 있다. adb와 fastboot로 작업하며, 중요한 것은 폰 저장소에는 아무것도 기록되지 않는다는 점이다. 릴리스마다 로더가 내장된 redwood UEFI 부트 이미지(hackios-redwood-boot.img)가 첨부돼 fastboot boot로 바로 띄울 수 있다. 다만 폰 자체의 벤더 펌웨어는 저장소에 포함될 수 없고 포함되지도 않는다. 그 펌웨어는 제조사 소유이므로, 구동할 바로 그 기기의 안드로이드에서 직접 추출해 워크스페이스 옆에 두어야 한다. Wi-Fi를 쓰려면 라디오의 MAC 주소와 접속할 네트워크 이름·비밀번호를 각각 지정해야 한다.

실무자 입장에서 HackiOS가 당장 쓸모 있는 물건은 아니다. 특정 기기 한 종에 묶여 있고, 세션이 수십 초 단위로 끝나며, 설치가 아니라 관찰에 가까운 실험이기 때문이다. 그럼에도 이 프로젝트가 흥미로운 이유는 운영체제 이식의 경계가 어디까지 밀릴 수 있는지를 실증했다는 데 있다. 오픈소스로 공개된 커널과 합법적으로 내려받은 펌웨어, 그리고 비공개 드라이버를 외부에서 재구현하는 호환 계층을 결합하면, 폐쇄적이라 여겨지던 스택도 부분적으로는 분해·재조립이 가능하다는 사실이 드러난 것이다. 부트로더·UEFI·드라이버 호환성에 관심 있는 엔지니어라면 이식 과정을 다룬 포팅 문서와 기기 프로파일 구조가 참고할 만한 사례가 된다.

물론 한계는 분명하다. 공개된 정보만으로는 어떤 기능까지 실제로 동작하는지, 그래픽과 Wi-Fi 외의 주변 장치 지원이 어느 수준인지, 안정성과 재현성이 다른 기기로 얼마나 확장될 수 있는지는 확인하기 어렵다. 벤더 펌웨어를 기기에서 직접 추출해야 한다는 조건은 재현의 문턱을 높이고, 세션이 짧게 끝나는 구조는 아직 완성된 이식과는 거리가 있음을 시사한다. 결국 이 작업은 제품이 아니라 하나의 증명에 가깝다. 그 증명이 겨냥하는 질문—하드웨어와 소프트웨어의 결합이 정말로 불가분한가—은 모바일 플랫폼을 다루는 사람이라면 한 번쯤 곱씹어볼 만하다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/oosexgang/hackios-xnu-kernel
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...