

macSubstrateは、macOSにおけるプロセス間コード注入のためのプラットフォームツールであり、iOSのCydia Substrateと同様の機能を持ちます。macSubstrateを使用すると、プラグイン(.bundleまたは.framework)をmacアプリ(サンドボックス化されたアプリを含む)に注入して、ランタイムで改変できます。
必要なのは、対象アプリ用のプラグインを入手または作成することだけです。
元の対象アプリの修正やコード署名に手間はかかりません。
対象アプリが更新された後も追加作業は不要です。
プラグインのインストールやアンインストールは非常に簡単です。
対象アプリが再起動されるたびに自動的にプラグインをロードします。
注入をより簡単にするGUIアプリを提供します。
System Integrity Protectionは、すべての実行中のプロセス(特権コードやサンドボックス外で実行されるコードを含む)に適用される新しいセキュリティポリシーです。このポリシーは、ディスク上およびランタイム時のコンポーネントに対する保護を拡張し、システムバイナリの変更をシステムインストーラとソフトウェアアップデートにのみ許可します。システムバイナリへのコード注入およびランタイムアタッチメントは許可されなくなりました。
macSubstrate.appをダウンロードし、/Applicationsに配置して起動します。

必要に応じて認証を許可します。
プラグインをインポートするか、macSubstrateにドラッグ&ドロップしてインストールします。

対象アプリを起動します。
手順3と手順4は入れ替え可能です
一度プラグインがmacSubstrateによってインストールされると、すぐに効果が現れます。ただし、対象アプリが再起動されるたび、またはmacOSが再起動されるたびに機能させるには、macSubstrateを実行したままにし、ログイン時に自動起動するように設定する必要があります。
プラグインが不要になったらアンインストールします。

macSubstrateは .bundle または .framework のプラグインをサポートしているため、有効な.bundleまたは.frameworkファイルを作成するだけで済みます。最も重要なことは、info.plistにキー macSubstratePlugin を追加し、その値をディクショナリにすることです:
| Key | Value |
|---|---|
TargetAppBundleID |
詳細については、デモプラグインdemo.bundleとdemo.frameworkを確認してください。
macSubstrateは、プラグインを便利に作成するための Xcodeテンプレート も提供しています:
ln -fhs ./macSubstratePluginTemplate ~/Library/Developer/Xcode/Templates/macSubstrate\ Plugin
Xcodeを起動すると、2つの新しいプラグインテンプレートが利用できるようになります。
WeChat用のプラグインも作成しました:
HongBao(お年玉)メッセージを受信したときに通知を送信します。
カスタマイズしたキーワードを含むメッセージを受信したときに通知を送信します。
メッセージの取り消しを防ぎ、通知を送信します。
あなた自身のプラグインのプルリクエストをPluginsに歓迎します :)
macSubstrateはMITライセンスの下で公開されています。詳細はLICENSEを参照してください。
macSubstrateは以下のプロジェクトに触発され、その助けを借りて作成されました:
対象アプリのCFBundleIdentifier。これによりmacSubstrateはどのアプリに注入するかを認識します。 |
Description | プラグインの簡単な説明 |
AuthorName | プラグインの作者名 |
AuthorEmail | プラグインの作者メールアドレス |