【问题标题】:What binary in the Update Ramdisk loads the Kernel during an iOS update?更新 Ramdisk 中的哪些二进制文件在 iOS 更新期间加载内核?
【发布时间】:2017-10-03 12:19:53
【问题描述】:

上图表示更新 Ramdisk 在 iOS 更新期间加载内核。如果是这样,iOS 10.3.1 更新 Ramdisk 中的哪个 binaryASR 等)加载了内核?

【问题讨论】:

    标签: ios kernel jailbreak


    【解决方案1】:

    它们都不是,这不是 ramdisk 的工作方式。

    对于初学者来说,内核在 ramdisk 上运行,而不是相反。到目前为止,我在任何平台上看到的任何内核-ramdisk 对都是如此。

    此外,来自 iOS ramdisk 的二进制文件都是 userland 二进制文件,这意味着:

    • 它们依赖于动态链接器 (/usr/lib/dyld) 和系统库。
    • 它们依赖于系统调用。
    • 它们依赖于文件系统的可用性。
    • 它们在 EL0(“userland”)下运行,这是特权最少的处理器模式。

    如果其中任何一个想要加载内核,就会有很多问题:

    • 内核在 EL1 中运行。如果您在 EL0 中运行,那么您无权访问 EL1 中的任何内容,因此无法将任何内核放在那里。
    • 链接、库和系统调用在 EL1 中的工作方式非常不同:
      • 系统库在 EL1 中不可用。我想它们可以制作可用,但是由于在任何给定时间只能在 EL1 中执行一个二进制文件,这听起来像是一个巨大的矫枉过正。
      • 在 iOS (KXLD) 中存在 EL1 的链接器,但它是 iOS 内核的一部分,旨在将内核扩展链接到内核。它不适用于用户级二进制文件。
      • 虽然从技术上讲,您可以使用 svc 指令从针对 EL1 的 EL1 生成异常,但您自己将被调用来处理它,这意味着在您加载内核之前,您内核. Userland 二进制文件并没有为此做好准备。

    也就是说,我不确定您的图片想要表达什么。我最好的猜测是,这意味着表示的 ramdisk 已传递到内核。但无论如何,iBoot 是加载和设置内核的工具。

    【讨论】:

    • 但是我听说 iBEC 在恢复模式启动(更新)期间加载内核。
    • 你没有错,但是在 iBEC 和 iBoot 或 iBSS 和 iLLB 之间进行二进制比较(你可以从任何 32 位 iOS 10 IPSW 获得未加密的) - 唯一不同的是标识符(ibec vs ibotibss vs illb),其余部分 100% 相同。所以 iBEC iBoot。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2012-06-18
    • 1970-01-01
    • 2013-05-02
    • 2013-12-06
    相关资源
    最近更新 更多