
macSubstrate 是一个用于 macOS 上进程间代码注入的平台工具,功能类似于 iOS 上的 Cydia Substrate。使用 macSubstrate,你可以将你的插件(.bundle 或 .framework)注入到 Mac 应用(包括沙盒应用)中,以便在运行时对其进行修改。
你只需要获取或为你的目标应用创建插件。
无需对原始目标应用进行修改和代码签名。
目标应用更新后无需额外操作。
安装或卸载插件非常简便。
目标应用重新启动时,插件会自动加载。
提供 GUI 应用,使注入更加简单。
系统完整性保护是一项新的安全策略,适用于每个正在运行的进程,包括特权代码和运行在沙盒之外的代码。该策略对磁盘上和运行时的组件提供了额外的保护,只允许系统安装程序和软件更新修改系统二进制文件。系统二进制文件不再允许代码注入和运行时附加。
下载 macSubstrate.app,放入 /Applications 并启动它。

如果需要,授予授权。
通过导入或拖拽到 macSubstrate 来安装插件。

启动目标应用。
步骤 3 和步骤 4 可以互换
一旦插件通过 macSubstrate 安装,它将立即生效。但如果你希望它在目标应用重新启动或 macOS 重启后仍然生效,你需要保持 macSubstrate 运行,并允许它在登录时自动启动。
当不再需要插件时卸载它。

macSubstrate 支持 .bundle 或 .framework 格式的插件,因此你只需要创建一个有效的 .bundle 或 .framework 文件即可。最重要的是在 info.plist 中添加一个键 macSubstratePlugin,其值为字典:
| Key | Value |
|---|---|
TargetAppBundleID | 目标应用的 ,告诉 macSubstrate 要注入哪个应用。 |
请查看演示插件 demo.bundle 和 demo.framework 了解详情。
macSubstrate 还提供了 Xcode 模板 来方便你创建插件:
ln -fhs ./macSubstratePluginTemplate ~/Library/Developer/Xcode/Templates/macSubstrate\ Plugin
启动 Xcode,你将看到 2 个新的插件模板。
我还制作了一个 微信插件:
当你收到 红包 消息时发送通知。
当你收到包含自定义关键词的消息时发送通知。
防撤回消息并发送通知。
欢迎提交你自己的插件到 Plugins :)
macSubstrate 以 MIT 许可证发布。详情请参见 LICENSE。
macSubstrate 的灵感来源于以下项目,并在其帮助下创建:
CFBundleIdentifierDescription | 插件的简要描述 |
AuthorName | 插件的作者名称 |
AuthorEmail | 插件的作者邮箱 |