mcpField
R
reverse-engineer

reverse-engineer

ローカル
github.com/Firzus開発ツール44 日前に更新

reverse-engineer について

reverse-engineerは、Electronアプリやコンパイル済みバイナリを調査する読み取り専用のMCPサーバー兼CLIです。対象を実行せず、位置情報付きで分析したいエージェントや開発者向けで、一部の逆コンパイル機能には追加ツールが必要です。

主な機能

  1. 01形式とバイナリマーカーの特定
  2. 02Electronアプリ構造とIPCの調査
  3. 03位置情報付きのファイル・アーカイブ検索
  4. 04バイナリのセクションと文字列の一覧化
  5. 05GoとRustのビルド情報の取得
  6. 06ネイティブ、.NET、APKコードの逆コンパイル

活用シーン

  1. 01未知の実行ファイルの初期調査
  2. 02アプリのアーカイブ内でコードや文字列を検索
  3. 03ElectronのプリロードとIPCチャンネルの確認
  4. 04バイナリ情報や逆コンパイルした関数の調査

MCP 対応

トリアージ、検索、バイナリ一覧、逆コンパイルなどの読み取り専用の解析ツールをMCPクライアントに公開します。結果には参照位置が含まれ、解析結果はSHA-256でキャッシュされます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"firzus-reverse-engineer": {
"command": "npx",
"args": [
"-y",
"reverse-engineer"
]
}
}
}
起動コマンドnpx -y reverse-engineer

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmreverse-engineer0.1.0-alpha.2

ツール

8

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
pathstringはいファイルまたはディレクトリ

詳細

リバースエンジニアリングサーバー

reverse-engineer スキルを支える、読み取り専用の MCP サーバーと CLI です。スキルはエージェント向けのエントリーポイントです。このサーバーは、プラットフォームによって使えなかったり不安定だったりするコマンド(otool、strings、jq、go version -m、asar の展開)を TypeScript パーサーで置き換え、引用可能な場所を示しながら、最大 8 KB で回答します。スキルをインストールしても、サーバーはインストールされません。

ツール

ツール返される内容
triageマジックバイトによる形式、アーキテクチャ、サイズ、SHA-256、マーカー(Go、Rust、Electron fuses、N-API、パッカー)、次の呼び出し
electron_surfaceキャッシュされた asar の展開、main、プリロード、exposeInMainWorld のキー、.node アドオンと JS から呼び出されるアドオン名、呼び出し箇所ごとにグループ化された IPC チャネル(アプリラッパーを含む)、fuses、asar の整合性
searchツリー、.asar、単一ファイル内の範囲指定検索(隠しフォルダーを含む)。file:line:col または file@offset と短い抜粋を返します
read行範囲、(整形し直す代わりに)最小化コードの列ウィンドウ、16 進ダンプ
binary_inventoryPE、ELF、Mach-O のセクション、ライブラリとインポート、エクスポート、Node アドオン名、ASCII および UTF-16 文字列、PE リソース
buildinfoGo のビルド情報(ツールチェーン、メインパッケージ、モジュール、設定、依存関係)と Rust の cargo-auditable パッケージ
decompileGhidra ヘッドレス。ファイルごとにキャッシュし、関数の一覧表示、文字列を使用する関数へのマッピング、1 つの関数の C コードを返します
managed.NET(ilspycmd 経由)および APK/DEX/JAR(jadx 経由)。一度だけ逆コンパイルし、要約して、1 つの型を返します

8 つのツールのカタログは約 6 KB、スキルは約 5.5 KB です。

設計ルール:

  • デフォルトでは簡潔に。 各回答は REVERSE_ENGINEER_MAX_BYTES(8192)未満に収まります。長い出力はキャッシュに書き込まれ、回答の末尾にそのパスが記載されるため、read と search で続きを取得できます。
  • 事実には出典を示します。 場所はすべて file:line:col、file@0xoffset、シンボル、または文字列で示します。
  • 一般的なケースで処理をブロックしません。 パッケージング後に署名された .node ファイルは、エラーではなく未検証のハッシュとして表示されます。不正な形式や悪意のあるバイナリでも、処理が停止することなく部分的な結果を返します。
  • 読み取り専用です。 ツールは対象を実行しません。書き込み先はキャッシュのみです。キャッシュの場所は %LOCALAPPDATA%\reverse-engineer\cache、~/Library/Caches/reverse-engineer、または $XDG_CACHE_HOME/reverse-engineer です(REVERSE_ENGINEER_CACHE で上書きできます)。例外として、Ghidra はドット付きフォルダーを含むプロジェクトパスを拒否するため、そのようなキャッシュパス(Linux のデフォルトである ~/.cache など)では、プロジェクトは一時ディレクトリ内のユーザー専用フォルダーに保存されます。キャッシュパスにスペースが含まれる場合、Ghidra はホームフォルダーに設定を保持します。jadx と .NET SDK は初回使用時に、そこへ独自の設定を書き込む場合があります。
  • SHA-256 でキャッシュします。 展開や解析の結果は再利用されます。

使用方法

要件:Node.js 24.11 以降。任意:decompile には Ghidra 11+ と JDK 21、managed には ilspycmd(.NET 10 SDK)と jadx(JDK 21)が必要です。エージェントは、スキルのインストールガイドを使ってインストールできます。公式リリースは、ユーザーごとのツールルート(%LOCALAPPDATA%\reverse-engineer\tools、~/Library/Application Support/reverse-engineer/tools、または $XDG_DATA_HOME/reverse-engineer/tools。REVERSE_ENGINEER_TOOLS で上書き可能)に配置され、管理者権限や PATH の変更は不要です。ツールはまずそこを検索し、次に PATH、GHIDRA_INSTALL_DIR、一般的なインストール先を検索します。

このパッケージは npm でアルファ版のプレリリースとして reverse-engineer という名前で公開されており、MCP Registry には io.github.Firzus/reverse-engineer として登録されています。バージョンを正確に指定してください:

npx -y [email protected] triage ./some.exe
npx -y [email protected] electron_surface "C:\Program Files\App" --focus audio,microphone

Claude Code の MCP 設定(プロジェクトの .mcp.json):

{
  "mcpServers": {
    "reverse-engineer": {
      "command": "npx",
      "args": ["-y", "[email protected]", "mcp"]
    }
  }
}

Windows では、"command": "cmd" と "args": ["/c", "npx", "-y", "[email protected]", "mcp"] を使ってください。クローンから未リリースのビルドを実行するには、開発のコマンドを実行してから、設定で node <checkout>/mcp/reverse-engineer/dist/cli.mjs mcp を指定します。

npx skills add Firzus/agent-skills --skill reverse-engineer を使ってスキルをインストールしてください。

開発

ツールチェーンには Vite+(vite-plus、ローカルの開発依存関係)を使用します。.github/workflows/reverse-engineer-check.yml は、Windows、macOS、Linux で同じチェックを実行します:

npm install
npx vp check    # format, lint, type check
npx vp test     # unit tests on synthetic and hostile fixtures
npx vp pack     # bundle dist/cli.mjs, a single file with no runtime dependency

実際のターゲットを使ったテストはオプトインです。RE_TARGETS(app.asar、app.asar.unpacked/、gh.exe を含むフォルダー)、RE_NOTION_DIR(インストール済み Notion アプリ)、RE_GHIDRA=1、RE_DOTNET_DLL、または RE_APK を設定してください。

リリース

.github/workflows/reverse-engineer-publish.yml は npm と MCP Registry に公開します。バージョン変更を main にマージすると公開されるため、マージをリリースの判断として扱ってください。リリースプルリクエストでは:

  1. package.json、package-lock.json、server.json、上記の固定バージョン指定コマンド、およびスキルの SKILL.md で同じバージョンを設定します。ユニットテストで最初の 3 つをチェックします。vp pack が新しいバンドル依存関係を報告した場合は、そのライセンスを THIRD_PARTY_NOTICES.md に追加してください。
  2. 開発のチェックを実行し、次に npm pack(dist/ を再ビルドします)を実行して、tarball に含まれる以下のファイルを確認します:LICENSE、README.md、THIRD_PARTY_NOTICES.md、dist/cli.mjs、ghidra/ExportDecompiled.java、package.json。

バージョンがすでに npm と MCP Registry に存在する場合、ワークフローは停止します。それ以外の場合は、チェックワークフローを実行し、公開権限のないジョブで tarball をビルドした後、プロジェクトや依存関係のコードを実行しないジョブから、release 環境で公開します。npm では信頼された公開を使用し、プレリリースは独自の dist-tag(alpha)で公開します。latest には公開しません。MCP Registry では GitHub OIDC ログインを使用します。最後のジョブでは、公開済みの --version を実行します。実行が失敗した場合は原因を修正し、その実行で Re-run all jobs を使用してください。各公開ステップではレジストリを再確認し、すでに存在するものはスキップします。失敗したリリースを隠すために、バージョンを上書きしたり公開を取り消したりしないでください。新しいバージョンを公開してください。

最初の自動リリースの前に、npm でワークフローを信頼する設定が必要です。reverse-engineer パッケージの設定で、ユーザー Firzus、リポジトリ agent-skills、ワークフロー reverse-engineer-publish.yml、環境 release を指定して、GitHub Actions の信頼された公開者を追加してください。

ベンチマーク

bench/ は leanrea のハーネスを Windows 向けに調整したもので、スキルなし、leanrea、REA(MCP とスキル)、このツールの 4 つを比較します。手法、結果、およびその限界については bench/BENCHMARK.md を参照してください。

ライセンス

MIT。ベンチマークのタスクとハーネスは、MIT ライセンスの leanrea を元に調整されています。leanrea の告知は bench/LICENSE-leanrea にあります。Fuse 名と Go のビルド情報のレイアウトは、Electron と Go ツールチェーンが公開している形式に従っています。REA のコードは一切コピーしていません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。