通过在 Mach-o 文件中插入 Load Commands 指令实现动态库注入的方法有一定局限性,因为如果没有足够的空白的空间,则不便插入新指令。本文讲解在不新增 Load Commands 指令的前提下实现自定义动态库的注入。
-
macOS 修改 MachO 文件实现动态库注入(二)
macOS 上大部分 Mach-o 文件是多架构的。了解如何修改单架构二进制文件后,还需进一步实现多架构 Mach-o 文件 Load Commands 指令的插入方法。
-
macOS 修改 Mach-o 文件实现动态库注入(一)
开启 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 等。