百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
K

ktrw

> 编程语言
开源

基于 A11 iPhone 的 KTRR 绕过的 iOS 内核调试器; 可与 LLDB 和 IDA Pro 兼容。

698 stars0 点赞1 次浏览
访问官网GitHub

工具介绍

基于 A11 iPhone 的 KTRR 绕过的 iOS 内核调试器; 可与 LLDB 和 IDA Pro 兼容。

KTRW 是一个适用于搭载 A11 SoC 的设备(如 iPhone 8)的 iOS 内核调试器。它展示了如何使用这些设备上的调试寄存器绕过 KTRR,将内核映射为可写,并加载一个实现 GDB 代理的内核扩展,从而通过标准 Lightning 到 USB 线缆实现全功能的内核调试,使用 LLDB 或 IDA Pro。随着 checkra1n 脱锁和 pongoOS 预引导环境的发布,现在可以将 KTRW 直接加载为内核扩展到 iOS 内核缓存中,因此原有的 KTRR 绕过不再被使用。

绕过 KTRR

KTRR 在 A10 中被引入,用于锁定关键内核数据(包括所有可执行代码),以防止其被修改,即使是具有内核内存读/写能力的攻击者也无法修改。然而,在 A11 SoC 中,ARMv8 外部调试寄存器和一个名为 DBGWRAP 的专有寄存器仍然被启用。这使得可以在这些设备上颠覆重置向量的执行,跳过 MMU 的 KTRR 初始化,并设置一个自定义页表基地址,将内核映射为可写。一旦 KTRR 被禁用,就可以动态加载内核代码,即加载内核扩展。

请注意,即使内核被映射为可写,但 AMCC RoRgn 所覆盖的物理页面仍然受到内存控制器的保护,因此对这些物理页面的写入将被丢弃。绕过 MMU 上的 KTRR 并不能破坏 AMCC 上的 KTRR,因此要将内核映射为可写的唯一方法是将 AMCC RoRgn 中的内核数据复制到新的可写物理页面。但由于 AMCC 仍然保护原始物理页面,并且由于重置向量从 AMCC RoRgn 内的物理地址执行,因此无法持续修改重置向量,以在重置时自动禁用 KTRR,除非具有更强大的功能(例如

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言