关于macSubstrate
macSubstrate是一款针对macOS的代码注入和打桩测试工具,该工具可以在macOS操作系统上实现进程间代码注入测试,其功能类似于iOS上的Cydia Substrate。
在该工具的帮助下,广大研究人员可以轻松将自己的安全测试插件(.bundle或.framework)注入到macOS应用程序(包括沙盒应用程序)中,以在程序运行时对其进行安全测试或其他调整。
功能特性
1、我们只需要获取并创建针对目标应用程序的插件即可;
2、不会影响目标应用程序的原始状态或代码实现;
3、目标应用程序更新后不影响macSubstrate工作;
4、可以轻松安装或卸载插件;
5、每当目标应用程序重新启动时自动加载插件;
6、提供了GUI应用程序,可以通过图形化界面简化代码和插件注入操作;
准备工作
1、禁用SIP
工具下载
广大研究人员可以直接访问该项目的【Releases页面】下载预编译的最新版本macSubstrate应用程序,然后直接拖动到/Applications目录中,直接启动:
如果系统弹窗申请授权的话,请给应用程序提供必要的权限。
接下来,通过导入和拖拽的方式将插件安装到macSubstrate中:
现在,我们就可以直接启动目标应用程序了。当macSubstrate完成插件安装之后,需要一点时间才可以生效。但是,如果你想要插件能够在目标应用程序重启或macOS重启时立刻运行生效,你需要保持macSubstrate的运行,并允许在操作系统登录时自动运行。
如果你不想再使用某一个插件了,你也可以直接卸载它:
插件开发
macSubstrate支持.bundle或.framework形式的插件,因此我们需要创建一个有效的.bundle或.framework文件来开发插件。文件中最重要的是要将macSubstratePlugin键添加到info.plist中,该键要求包含下列值:
键 | 值 |
TargetAppBundleID | 目标应用程序的CFBundleIdentifier,指定要注入的是哪一个应用程序 |
Description | 插件概述 |
AuthorName | 插件开发者 |
AuthorEmail | 插件开发者电子邮箱 |
项目提供了demo.bundle和 demo.framework作为示例插件可供大家参考使用。
Xcode模板
macSubstrate还提供了Xcode Templates来帮助我们轻松创建插件:
ln -fhs ./macSubstratePluginTemplate ~/Library/Developer/Xcode/Templates/macSubstrate\ Plugin
启动Xcode后,就会生成两个新的插件模板了。
许可证协议
本项目的开发与发布遵循MIT开源许可证协议。
项目地址
macSubstrate:【GitHub传送门】
参考资料
Configuring System Integrity Protection
OS X El Capitan v10.11