天天看点

macSubstrate:一款针对macOS的代码注入和打桩测试工具

作者:FreeBuf

关于macSubstrate

macSubstrate是一款针对macOS的代码注入和打桩测试工具,该工具可以在macOS操作系统上实现进程间代码注入测试,其功能类似于iOS上的Cydia Substrate。

macSubstrate:一款针对macOS的代码注入和打桩测试工具

在该工具的帮助下,广大研究人员可以轻松将自己的安全测试插件(.bundle或.framework)注入到macOS应用程序(包括沙盒应用程序)中,以在程序运行时对其进行安全测试或其他调整。

功能特性

1、我们只需要获取并创建针对目标应用程序的插件即可;

2、不会影响目标应用程序的原始状态或代码实现;

3、目标应用程序更新后不影响macSubstrate工作;

4、可以轻松安装或卸载插件;

5、每当目标应用程序重新启动时自动加载插件;

6、提供了GUI应用程序,可以通过图形化界面简化代码和插件注入操作;

准备工作

1、

工具下载

广大研究人员可以直接访问该项目的【】下载预编译的最新版本macSubstrate应用程序,然后直接拖动到/Applications目录中,直接启动:

macSubstrate:一款针对macOS的代码注入和打桩测试工具

如果系统弹窗申请授权的话,请给应用程序提供必要的权限。

接下来,通过导入和拖拽的方式将插件安装到macSubstrate中:

macSubstrate:一款针对macOS的代码注入和打桩测试工具

现在,我们就可以直接启动目标应用程序了。当macSubstrate完成插件安装之后,需要一点时间才可以生效。但是,如果你想要插件能够在目标应用程序重启或macOS重启时立刻运行生效,你需要保持macSubstrate的运行,并允许在操作系统登录时自动运行。

如果你不想再使用某一个插件了,你也可以直接卸载它:

macSubstrate:一款针对macOS的代码注入和打桩测试工具

插件开发

macSubstrate支持.bundle或.framework形式的插件,因此我们需要创建一个有效的.bundle或.framework文件来开发插件。文件中最重要的是要将macSubstratePlugin键添加到info.plist中,该键要求包含下列值:

TargetAppBundleID 目标应用程序的CFBundleIdentifier,指定要注入的是哪一个应用程序
Description 插件概述
AuthorName 插件开发者
AuthorEmail 插件开发者电子邮箱

项目提供了demo.bundle和 demo.framework作为示例插件可供大家参考使用。

Xcode模板

macSubstrate还提供了来帮助我们轻松创建插件:

ln -fhs ./macSubstratePluginTemplate ~/Library/Developer/Xcode/Templates/macSubstrate\ Plugin           

启动Xcode后,就会生成两个新的插件模板了。

许可证协议

本项目的开发与发布遵循开源许可证协议。

项目地址

macSubstrate:https://github.com/wzqcongcong/macSubstrate

参考资料

https://developer.apple.com/library/content/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_11.html