macos-private-framework-research-skill は何をしますか?
エージェントがmacOSのプライベートフレームワークを調査するためのスキル。dyld共有キャッシュの抽出、Objective-C/Swiftメタデータの再構築、Hopper/RuntimeViewer/RuntimeBrowser/ipswワークフロー、およびMOTIFスタイルのLLMガイド型推論をサポートします。
概要
このスキルを使用すると、macOSシステムに含まれるプライベートフレームワーク(例:CoreUI, SkyLight, UIKitMacHelperなど)の内部構造を詳細に調査できます。主な機能は以下のとおりです。
- dyld共有キャッシュの抽出:
dyld_shared_cacheから特定のフレームワークバイナリを抽出します。 - Objective-Cメタデータの再構築: クラス階層、メソッドリスト、プロパティ、プロトコル一覧を復元します。
- Swiftメタデータの再構築: 名前修飾(mangling)されたシンボルを解読し、構造体やEnumの型情報を取得します。
- 逆アセンブルツールとの連携: Hopper, RuntimeViewer, RuntimeBrowser,
ipswツールを使用した解析ワークフローを提供します。 - LLMガイド型推論: MOTIFスタイルで、未公開メソッドの引数型や戻り値の型を推論します。
前提条件
- macOS 10.15+ (Catalina以降) の環境
- 以下のツールがインストールされていること(推奨):
- Hopper Disassembler (v5+) または Ghidra
- RuntimeViewer または RuntimeBrowser
- ipsw (v3.0+)
jq,plutil,strings,nm,otoolなどの標準macOSツール
使用方法
1. dyld共有キャッシュからのフレームワーク抽出
# フレームワーク一覧を取得
ipsw dyld list -a | grep -i "privateframework"
# 特定のフレームワークを抽出
ipsw dyld extract /System/Library/dyld/dyld_shared_cache_arm64e -o /tmp/extracted/ SkyLight
2. Objective-Cメタデータの再構築
# クラス一覧の抽出
otool -ov /tmp/extracted/SkyLight.framework/SkyLight | grep "class"
# メソッドリストの表示
class-dump /tmp/extracted/SkyLight.framework/SkyLight | head -100
3. Swiftシンボルの解析
# Swiftシンボルの名前修飾をデコード
nm /tmp/extracted/SkyLight.framework/SkyLight | xcrun swift-demangle
# 構造体のレイアウト情報を取得(存在する場合)
strings /tmp/extracted/SkyLight.framework/SkyLight | grep -i "struct"
4. Hopper/Ghidraとの連携
- 抽出したフレームワークバイナリをHopperまたはGhidraで開きます。
- 関心のあるクラス名で検索します(例:
CGSWindow)。 - 疑似コードビューでメソッドのロジックを分析します。
- 必要に応じて、LLMに疑似コードを渡して型推論をリクエストします。
5. MOTIFスタイルのLLMガイド型推論
LLMに対して以下のようなプロンプトを使用します:
Analyze the following Hopper pseudocode for method "-[CGSWindow _setLevel:]" in the SkyLight private framework.
The method takes a single argument (int or unsigned int) and returns void.
Reconstruct the method signature and infer the Objective-C type encoding.
LLMは、コンテキスト(セレクタ名、使用されるデータ型、戻り値)を基に型情報を推論します。
例: CoreUIフレームワークの調査
# CoreUIフレームワークを抽出
ipsw dyld extract /System/Library/dyld/dyld_shared_cache_arm64e -o /tmp/coreui/ CoreUI
# クラスダンプ
class-dump /tmp/coreui/CoreUI.framework/CoreUI > /tmp/coreui/classes.txt
# 特定のクラスのメソッドを検索
grep "CUITheme" /tmp/coreui/classes.txt | head -20
注意点
- プライベートフレームワークのAPIは予告なく変更される可能性があります。
- プライベートAPIを使用したアプリケーションは、App Storeの審査を通過できません。
- 解析は教育およびセキュリティ研究目的に限定してください。
ipswツールは定期的にアップデートしてください(brew upgrade ipsw)。
関連リソース
- Apple Privacy & Security Research - Appleの公式セキュリティリサーチプログラム
- dyld_shared_cacheの解析 - ipswによるキャッシュ解析のドキュメント
- Objective-C Runtime Programming Guide - Apple公式ランタイムガイド
ライセンス
元のリポジトリのライセンスに従います。