Xnuspy 项目常见问题解决方案
1. 项目基础介绍
Xnuspy 是一个针对 iOS 设备的开源内核函数挂钩框架,它通过安装一个新的系统调用 xnuspy_ctl
来允许用户空间挂钩内核函数。该框架支持 iOS 13、iOS 14 和 iOS 15,适用于 checkra1n 0.12.2 及以上版本,并且仅支持非 4K 设备。Xnuspy 完全禁用了 KTRR/KPP,使得在 EL1 级别创建 RWX 内存成为可能。这个项目主要使用 C 语言编写。
2. 新手常见问题及解决步骤
问题一:如何正确构建项目?
问题描述: 新手可能会遇到编译项目时遇到错误,不知道如何正确构建。
解决步骤:
- 确保已经安装了 libusb 库。可以在终端中使用
brew install libusb
命令安装。 - 在项目顶层目录运行
make
命令,这会构建加载器和模块。 - 如果需要调试信息,可以在运行
make
命令前添加以下选项:XNUSPY_DEBUG=1
:将调试输出发送到内核日志(kprintf)。XNUSPY_SERIAL=1
:将调试输出发送到 IOLog。XNUSPY_LEAKED_PAGE_LIMIT=n
:设置 Xnuspy 在开始回收之前允许泄漏的页面数量。XNUSPY_TRAMP_PAGES=n
:设置 Xnuspy 为_trampoline 结构预留的页面数量。
问题二:如何正确使用项目?
问题描述: 新手可能不知道如何使用构建好的模块。
解决步骤:
- 使用 checkra1n 工具引导设备至 pongo shell:在终端中运行
/Applications/checkra1n.app/Contents/MacOS/checkra1n -p
。 - 在构建加载器和模块的同一目录下,运行
loader/loader module/xnuspy
。 - 等待几秒钟,Xnuspy 将自动运行,设备将引导。
问题三:遇到编译错误或设备启动问题时如何解决?
问题描述: 用户可能会在编译时遇到错误,或者在设备启动过程中遇到卡住的情况。
解决步骤:
- 确保使用的是正确版本的编译器和依赖库。
- 如果设备在 "Booting" 阶段卡住,尝试重新启动设备并再次运行命令。
- 如果遇到内核指令获取异常,尝试重新编译并运行挂钩程序。
- 如果编译的
xnuspy_ctl
代码在特定设备上无法正常标记为可执行,尝试在其他设备上测试或在不同的 iOS 版本上尝试。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考