Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
super-tart-vphone-writeup — Руководство по созданию виртуального iPhone с использованием компонентов VPHONE600AP из прошивки PCC от Apple, включающее патчинг прошивки, модификацию цепочки загрузки и отладку ядра для исследований безопасности iOS. | Kitploit
Инструменты/GitHubGitHub/wh1te4ever/super-tart-vphone-writeup
Безопасность iOSАнализ уязвимостейЭксплуатацияОбратная инженерияОтладчикиТестирование на ПроникновениеМобильная безопасностьБезопасность оборудования и IoTАнализ Прошивок
Эксплуатация Бинарных Файлов
GitHubwh1te4ever/super-tart-vphone-writeup

super-tart-vphone-writeup

Руководство по созданию виртуального iPhone с использованием компонентов VPHONE600AP из прошивки PCC от Apple, включающее патчинг прошивки, модификацию цепочки загрузки и отладку ядра для исследований безопасности iOS.

Репозиторий
1.2k168237 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Сборка виртуального iPhone с использованием компонента VPHONE600AP из недавно выпущенной прошивки PCC

Особая благодарность / Признательность

  • dlevi309 (Предоставил идеи для сенсорного взаимодействия на виртуальном iPhone)
  • khanhduytran0, 34306, asdfugil, verygenericname (Предоставили другие идеи для создания виртуального iPhone, включая Cryptex, активацию устройства, загрузку с Ramdisk и т.д.)
  • ma4the, Mard, SwallowS (Тестирование работоспособности в других средах)

Мотивация

Примерно в конце 2024 года Apple начала представлять Private Cloud Compute, заявляя об открытии нового горизонта для облачной конфиденциальности ИИ. Затем, примерно в конце 2025 года, появились интересные новости: Apple добавила новые компоненты, связанные с vphone600ap, в прошивку PCC, начиная с cloudOS 26.

Источник: https://x.com/matteyeux/status/2006339694783848660/photo/1

Источник: https://x.com/matteyeux/status/2006339694783848660/photo/1

«Виртуальная машина среды исследования iPhone»?

Это запланированный шаг Apple по созданию и распространению виртуальной среды iPhone для других исследователей безопасности в будущем, или же это просто ошибка? Учитывая, что ядро сборки DEVELOPMENT/KASAN было однажды обнаружено в OTA-обновлениях iOS 15.0 beta — 15.1 beta3 ещё в 2021 году, возможность оплошности исключать нельзя. В то время ядро оставалось включённым около 4 месяцев, примерно с июня по октябрь 2021 года.

Затем, примерно в январе этого года, был опубликован твит, показывающий загрузку виртуального iPhone с использованием этих компонентов, связанных с vphone600ap.

Источник: https://x.com/_inside/status/2008951845725548783

Источник: https://x.com/_inside/status/2008951845725548783

Screenshot 2026-02-24 at 7.39.03 PM.png

Насколько я видел, почти всё работало действительно элегантно. По сравнению с проектом QEMUAppleSilicon(Inferno), который я видел ранее, он работает гораздо быстрее и плавнее. Более того, он даже, похоже, поддерживал ускорение Metal. В конечном итоге, полностью очарованный этим, я сразу же приступил к созданию собственного виртуального iPhone 31 января.

Screenshot 2026-02-24 at 7.46.41 PM.png

Модификация super-tart для загрузки виртуального iPhone

Упомянутый проект — security-pcc. Он соответствует исходному коду бинарного файла /System/Library/SecurityResearch/usr/bin/vrevm. Интересный момент заключается в том, что он использует приватные методы, предоставляемые Virtualization.framework. На виртуальной машине, используемой для исследований PCC, видно, что ISA и PlatformVersion явно задаются в процессе инициализации аппаратной модели.

Screenshot 2026-02-24 at 8.27.01 PM.png

В качестве bootrom используется AVPBooter.vresearch1.bin (/System/Library/Frameworks/Virtualization.framework/Resources/AVPBooter.vresearch1.bin)

Screenshot 2026-02-24 at 8.32.08 PM.png

а в качестве SEPROM (avpsepbooter) используется AVPSEPBooter.vresearch1.bin, который отдельно загружает файл SEPStorage, функционирующий аналогично AuxiliaryStorage. (/System/Library/Frameworks/Virtualization.framework/Versions/A/Resources/AVPSEPBooter.vresearch1.bin)

Ещё один интересный момент: если посмотреть на код настройки разрешения, оно установлено на 1290x2796, что соответствует устройствам iPhone 14 Pro Max, 15 Plus, 15 Pro Max и 16 Plus.

Screenshot 2026-02-24 at 8.34.11 PM.png

Обладая только этой информацией, этого должно быть более чем достаточно для модификации super-tart с целью загрузки виртуального iPhone. Я внёс изменения, как показано ниже.

  • /Sources/tart/VM.swift```swift ... class VM: NSObject, VZVirtualMachineDelegate, ObservableObject { ... // vzHardwareModel derives the VZMacHardwareModel config specific to the "platform type" // of the VM (currently only vresearch101 supported) static private func vzHardwareModel_VRESEARCH101() throws -> VZMacHardwareModel { var hw_model: VZMacHardwareModel

    guard let hw_descriptor = _VZMacHardwareModelDescriptor() else { fatalError("Failed to create hardware descriptor") } hw_descriptor.setPlatformVersion(3) // .appleInternal4 = 3 hw_descriptor.setBoardID(0x90) hw_descriptor.setISA(2) hw_model = VZMacHardwareModel._hardwareModel(withDescriptor: hw_descriptor)

    guard hw_model.isSupported else { fatalError("VM hardware config not supported (model.isSupported = false)") }

    return hw_model }

    static func craftConfiguration( diskURL: URL, nvramURL: URL, romURL: URL, sepromURL: URL? = nil, vmConfig: VMConfig, network: Network = NetworkShared(), additionalStorageDevices: [VZStorageDeviceConfiguration], directorySharingDevices: [VZDirectorySharingDeviceConfiguration], serialPorts: [VZSerialPortConfiguration], suspendable: Bool = false, nested: Bool = false, audio: Bool = true, clipboard: Bool = true, sync: VZDiskImageSynchronizationMode = .full, caching: VZDiskImageCachingMode? = nil ) throws -> VZVirtualMachineConfiguration { let configuration: VZVirtualMachineConfiguration = .init()

    // Boot loader let bootloader = try vmConfig.platform.bootLoader(nvramURL: nvramURL) Dynamic(bootloader)._setROMURL(romURL) configuration.bootLoader = bootloader

    // SEP ROM let homeURL = FileManager.default.homeDirectoryForCurrentUser var sepstoragePath = homeURL.appendingPathComponent(".tart/vms/vphone/SEPStorage").path let sepstorageURL = URL(fileURLWithPath: sepstoragePath) let sep_config = Dynamic._VZSEPCoprocessorConfiguration(storageURL: sepstorageURL) if let sepromURL { // default AVPSEPBooter.vresearch1.bin from VZ framework sep_config.romBinaryURL = sepromURL } sep_config.debugStub = Dynamic._VZGDBDebugStubConfiguration(port: 8001) configuration._setCoprocessors([sep_config.asObject])

    // Some vresearch101 config let pconf = VZMacPlatformConfiguration() pconf.hardwareModel = try vzHardwareModel_VRESEARCH101()

    let serial = Dynamic._VZMacSerialNumber.initWithString("AAAAAA1337") let identifier = Dynamic.VZMacMachineIdentifier._machineIdentifierWithECID(0x1111111111111111, serialNumber: serial.asObject) pconf.machineIdentifier = identifier.asObject as! VZMacMachineIdentifier

Скачать инструмент