
Pishi is a code coverage tool like kcov for macOS.
Pishi 是一个静态二进制重写工具,旨在对 XNU 内核和任意 macOS 内核扩展(kext)中的 basic blocks 进行插桩。
就 XNU 内核而言,Pishi 允许你在函数、文件或文件夹级别进行插桩。例如,你可以对 /bsd/net/ 目录中的所有内容进行插桩,也可以专门聚焦于 content_filter.c,或者只针对 XNU 源代码中的某一个特定函数,例如 vnode_getfromfd。这可以实现定向模糊测试。
构建并安装 Pishi 后,你可以使用我修改过的 libprotobuf-mutator 版本,这需要你先应用我的补丁(使 libfuzzer 具备 Pishi 感知能力),然后构建 LLVM,即可通过 libFuzzer 进行结构感知、反馈感知的 macOS 内核 KEXT 模糊测试。
更多技术讨论请阅读 MoreInfo。要开始模糊测试,请阅读 HowToFuzz
与其他 XNU 内核插桩方法相比:
关于安全与防护的说明 请避免在个人设备上运行 Pishi;请使用一台专门的研究设备,并愿意承担设备损坏的风险。