是否可以编辑和重新编译iOS内核?

时间:2015-06-16 00:43:15

标签: ios iphone kernel

我想反编译一个iOS 3.1.3内核以更好地理解它,但我不知道从哪里开始,但不要被愚弄我不是绿色角编程。

2 个答案:

答案 0 :(得分:2)

内核是open source,因此您可以查看和编译它。 iOS 3.1.3在回购邮件中,但您还需要查看3.0

来自Apple

  

作为第一家将开源开发作为其持续软件战略的重要组成部分的主要计算机公司,Apple仍然致力于开源开发模式。 Mac OS X的主要组件(包括UNIX核心)在Apple的开源许可下提供,允许开发人员和学生查看源代码,从中学习并提交建议和修改。

答案 1 :(得分:1)

其iOS版本中的XNU内核是而不是开源,但其i386 / x86_84中的xnu(以及旧版PPC中的xnu)是。

XNU内部由多个层构建,底层的两个平台专家和ml_ * API充当底层硬件的“粘合剂”。这意味着如果没有上述部分,您可以编译源代码(使用ARMv7交叉编译器,如iPhone SDK中的那个),但内核实际上不会启动。

另一个难点在于内核扩展(XNU代表“模块”)。这些是驱动程序,没有它们你真的不能做太多 - 再次,内核无法启动,因为它无法初始化它的任何平台依赖项。

另外,与它看起来相反,虽然iOS和OS X内核非常相似,但有一些细微差别(#ifdef CONFIG_EMBEDDED和#ifdef ARM可见,直到1699年之后Apple才发现它们正在泄漏用于越狱者的信息,最后使用预处理器在公开之前剥离iOS特定的修改。

反编译是另一回事。可以从内核映像(一旦解密或转储)通过相当可读的程序集(尽管不是完整的源代码级别)进行反汇编和回退。 IDA和其他专业工具(例如jtool)具有这些功能。

至少有两个项目可以为ARM编译和启动开源版本。一个是Christina Brooks(?),另一个是WinOCM。后者在内部通过ARM实现了解XNU已经臭名昭着,最终被苹果公司采用,从而减少了任何开源实现的机会。