开启 SIP 的机器上可能无法使用环境变量注入动态库。这里讲解修改单架构 Mach-o 文件,通过插入 Load Commands 指令的方式,实现自定义动态库的注入。
-
macOS Hook 系统调用
使用 Apple 提供的 dyld-interposing 方法,实现 macOS 系统调用的钩子。
-
macOS 用户态进程间的通信实现
基于 XPC 实现 macOS 进程间通信。XPC 框架可以让开发者像使用本地实现的函数一样方便地调用其他进程实现的函数。本文使用 swift 语言实现 Apple 推荐的 XPC 进程通信机制。
-
macOS 内核拓展与用户态进程的通信实现(二)
基于 IOKit 实现 macOS 内核与应用层间的双向通信。使用 IOService 和 IOUserClient 建立内核拓展与应用间的通信机制,并借助 IOSharedDataQueue 实现内核与应用层间的数据交互。
-
macOS 内核拓展与用户态进程的通信实现(一)
基于 KernControl 实现 macOS 内核与应用层间的双向通信。KernControl 本质即 socket,本文的示例代码可以看出实现过程相当于重写了部分 socket 相关的函数,如 setopt 等。