macOS ARM64向けのローカルプロセスメモリデバッグツールです。 自分が管理するアプリやMOD検証環境で、対象プロセスを選択し、値候補をスキャンして読み書きできます。
swift buildRun:
.build/debug/process-memory-debuggerFor normal GUI launch on macOS, package and open the app bundle:
swift build -c release
sh scripts/package-app.sh release
open "dist/Process Memory Debugger.app"The package script signs the local app with the debugger entitlement required by
task_for_pid.
- 対象アプリを起動します。
- このツールを起動し、プロセス一覧から対象アプリを選ぶかPIDを入力します。
Attachを押します。- 現在値を
Valueに入力し、Initial Scanを押します。 - 対象アプリ側で値を変化させ、新しい現在値を入力して
Refine Scanを押します。 - 候補が十分に少なくなったら行を選択し、
Writeに新しい値を入力してWrite Selectedを押します。
Limitは初回スキャンの候補数上限です。0または空欄なら無制限、正の数ならその候補数に達した時点で停止します。
右側のAddress Bookで、アプリや用途ごとにフォルダを作り、見つけたアドレスを保存できます。
Folder nameに名前を入れてNew Folderを押すとフォルダを作成します。- スキャン候補を選び、
Address nameとMemoを入れてSave Candidateを押すと、現在のフォルダに保存します。 - 保存済みアドレスを選んで
Read Savedを押すと現在値を読みます。 - 保存済みアドレスを選び、上部の
Writeに値を入れてWrite Savedを押すと、そのアドレスへ書き込みます。
保存先は次のJSONです。
~/Library/Application Support/ProcessMemoryDebugger/address-book.json
フォルダ、名前、アドレス、型、メモ、元プロセス名を保存するため、複数のローカルアプリのメモリデバッグに同じ形式で使えます。
他プロセスのメモリを読むにはtask_for_pidが成功する必要があります。
失敗する場合は、次を確認してください。
- System SettingsでDeveloper Tools関連の許可を有効にする。
scripts/package-app.shで作った.appから起動し、デバッグentitlement付き署名を使う。- 対象プロセスが自分のユーザーで起動していることを確認する。
- SIPやHardened Runtimeの設定により、配布版アプリでは読み取り自体が拒否される場合があります。
このツールはローカルデバッグ支援用です。オンラインプレイ、保護機構回避、第三者環境での利用は対象外です。
swift test