
REA はリバースエンジニアリングのタスクを CLI と MCP サーバーに接続し、ターミナルやエージェントから分析を開始できるようにします。初回の設定では、自分の小さなプロジェクトを使って「エントリーポイントの確認—クライアント接続—分析—証拠の照合」を一通り試すのがおすすめです。本番プログラムをいきなり試すのは避けてください。
このチュートリアルで重要なのは、次の2点を分けて検証することです。REA が正常に動作しているかどうかと、対象についての説明が正しいかどうかです。前者はプロセスとツール呼び出しを、後者は元ファイルと再現可能な動作を確認します。
ドキュメントで対応対象と依存関係を確認する
REA の項目からプロジェクトのドキュメントに移動し、インストール手順、CLI の使い方、MCP 接続の例を確認します。「あらゆるものをリバースエンジニアリング」という説明は機能の概要であり、入力形式の一覧として代用することはできません。
インストール前に、以下の項目を控えておきます。
| 確認する内容 | 後で使用する場面 |
|---|---|
| ソースコードのディレクトリ、単一ファイル、その他の対象のどれを受け付けるか | 分析サンプルの選択 |
| 実行環境とバージョンの要件 | ローカル環境の作成 |
| 公式のインストールコマンドと CLI のエントリーポイント名 | インストールとエントリーポイントの確認 |
| MCP の起動パラメーターとトランスポート方式 | クライアントの設定 |
| モデル、認証情報、外部ツールの要件 | 起動や分析の失敗の切り分け |
特に、「CLI の分析コマンド」と「MCP サーバーの起動コマンド」を区別してください。分析を一度実行するエントリーポイントは、通常、タスクの完了後に終了します。クライアントが接続するサーバーは、プロトコルに従って継続的にやり取りする必要があります。前者をサーバー設定に入力すると、プロセスの起動直後に切断されることがよくあります。
以下のターミナル手順は、macOS または Linux の Bash を使用します。サンプルには Python のソースコードを使います。REA がこの種の入力に対応していることを確認してから、この手順に進んでください。バイナリ、トラフィックファイル、ウェブページにはそれぞれ異なる処理フローがあるため、拡張子を変更してソースコード分析のフローに押し込まないでください。
自分が所有する、または使用許可を得た最小限のサンプルを用意する
最初のプロジェクトでは、エントリーポイント、変換関数、いくつかの入力と出力だけを残します。こうすれば、分析結果にずれがあったときに、該当する行をすぐに特定できます。
mkdir -p "$HOME/rea-lab/input"
cd "$HOME/rea-lab"
cat > input/token_demo.py <<'PY'
import base64
import sys
def encode_token(text):
payload = text.strip().encode("utf-8")
return base64.urlsafe_b64encode(payload).decode("ascii").rstrip("=")
if __name__ == "__main__":
print(encode_token(sys.argv[1]))
PY
python3 input/token_demo.py ' hello '
python3 input/token_demo.py 'hello'
python3 input/token_demo.py ' '
最初の2つの出力はいずれも aGVsbG8 で、3つ目の出力は空行です。このサンプルには、検証しやすい動作が3つ含まれています。前後の空白の削除、URL セーフ Base64 エンコード、末尾のパディング文字の削除です。
後で1行ずつ確認できるよう、行番号付きのソースコードも保存します。
nl -ba input/token_demo.py > source-numbered.txt
分析ツールには input ディレクトリだけを渡し、テスト記録は外に置きます。まず対象から動作を推定させ、それを記録と比較すれば、より有意義な検証になります。
自分のプロジェクトにも秘密情報が含まれている場合があります。分析ディレクトリに .env、アクセストークン、実際のユーザーデータを置かないでください。リモートモデルを設定している場合、関連ファイルの内容がモデルサービスに送信される可能性があります。初回は、ここにある純粋なテストコードだけで十分です。
インストールしてコマンドラインのエントリーポイントを確認する
REA のドキュメントに記載されているインストールコマンドを使い、出力をすべて保存してください。プロジェクト名からパッケージ名を推測して pip install や npm install を試さないでください。同名のパッケージや誤ったエントリーポイントによって、その後の切り分けが難しくなることがあります。
インストールが終わったら、現在のターミナルで実際の CLI 名を確認します。以下の変数には自分で入力してください。REA の実行ファイル名をあらかじめ想定していません。
read -r -p "输入文档中的 CLI 入口名称:" REA_CLI
command -v "$REA_CLI"
確認が成功したと判断できるのは、実行ファイルのパスが出力された場合です。何も出力されない場合は、まずインストールが完了しているか、インストール先のディレクトリが PATH に追加されているかを確認してください。クライアントの設定に進むのはその後です。
続いて、ドキュメントに記載されたヘルプコマンドと最小限の呼び出しを実行します。この時点で、ヘルプ情報が正常に表示されること、パラメーターが認識されること、実行環境やモジュールの不足によるエラーがないことを確認してください。ヘルプ情報が表示されても、エントリーポイントが実行可能だと確認できただけで、分析フローの検証はまだ完了していません。
インストールに仮想環境を使った場合は、その環境内のエントリーポイントの絶対パスを保存してください。GUI クライアントは、ターミナルで実行した環境の有効化操作を自動的には引き継ぎません。
クライアントを設定して接続を確認する
まず MCP のトランスポート方式を確認します。以下は stdio 接続の構造を理解するための例です。プレースホルダー値はドキュメントに記載された実際のパスとパラメーターに置き換えてください。そのまま貼り付けて起動することはできません。
{
"mcpServers": {
"rea": {
"command": "/ABSOLUTE/PATH/TO/EXECUTABLE",
"args": ["MCP_START_ARGUMENT"],
"env": {}
}
}
}
command には実行ファイルを指定し、args にはパラメーターを配列に分けて指定します。スペースを含む起動コマンド全体を command に入れないでください。env には、ドキュメントで指定されている環境変数だけを追加します。
クライアントの設定形式が異なる場合は、この3つの情報をそのサービス設定に対応付けてください。HTTP 接続の場合はサーバーのアドレスを入力し、上記の stdio の例を流用しないでください。
設定を保存して再接続したら、次の順で確認します。
- クライアントがサーバープロセスを起動し、すぐに終了していない。
- MCP の初期化が完了している。
- クライアントに REA が公開するツールが表示されている。
- ツールの説明にある入力パラメーターと対象の種類が想定どおりである。
特に重要なのは3番目です。チャット画面に「接続済み」と表示されるだけでは、分析ツールを呼び出せることの確認にはなりません。まずツール一覧を確認してからタスクを送信してください。Agent に呼び出させるために、自分で analyze というツール名を作らないでください。
分析を開始して元ファイルと照合する
ターミナルでサンプルの絶対パスを取得します。
cd "$HOME/rea-lab"
pwd -P
出力されたパスに /input を連結し、クライアントに渡します。分析リクエストは次のように記述できます。
请调用已连接的 REA 工具分析下面的自有源码目录:
<替换为 input 目录的绝对路径>
目标:
1. 找出程序入口与调用关系。
2. 解释输入字符串到输出字符串的每一步转换。
3. 说明空白输入、非 ASCII 输入和缺少命令行参数时的行为。
4. 每个结论附上文件路径、函数名和相关代码位置。
5. 将源码直接支持的结论与推测分开列出。
只做静态阅读,不修改文件,不安装依赖,不执行目标代码。
クライアントのツール呼び出し記録を確認します。実際にどのツールが呼び出されたか、どのパスが渡されたか、内容が返されたかエラーになったかを確認してください。ツール呼び出しが発生していない回答は、今回の接続検証には含めません。
結果を読むときは、まず根拠となる箇所を探します。このサンプルでは、strip() によって ' hello ' と 'hello' が同じ出力になる理由を説明できます。rstrip("=") は、結果にパディング文字が含まれない理由を説明できます。Base64 を暗号化と説明するのは概念上の誤りなので、base64.urlsafe_b64encode の行に戻って訂正してください。
引数がない場合の動作も確認しておくとよいでしょう。
python3 "$HOME/rea-lab/input/token_demo.py"
ソースコードは sys.argv[1] に直接アクセスしており、引数のチェックはありません。このコマンドを実行すると IndexError が発生します。分析結果に「使用方法を表示する」と書かれている場合は、エントリーポイントのコードを改めて引用するよう求めてください。
依存関係、パス、権限、入力の順に切り分ける
切り分けでは、意味のある最初のエラーを保存してください。最後に表示された「接続失敗」という一言だけを切り取らないでください。
command not found が発生した場合は、まず CLI のエントリーポイントと PATH を確認します。ModuleNotFoundError または Cannot find module が発生した場合は、起動エントリーポイントが属する実行環境を確認してください。別のインタープリターやパッケージ環境に依存関係をインストールしないよう注意します。
ENOENT や No such file or directory が発生した場合は、実行ファイルのパスと対象のパスをそれぞれ確認します。ターミナルのカレントディレクトリとクライアントの作業ディレクトリは異なることがよくあります。対象には常に絶対パスを使用してください。
Permission denied が発生した場合は、対象を読み取れるか、ディレクトリに入れるか、エントリーポイントを実行できるかを確認します。問題を隠すために chmod -R 777 を使わないでください。ディレクトリ全体の書き込み権限を広げることになります。
プロセスは起動するものの MCP の初期化に失敗する場合は、起動パラメーターとトランスポート方式を確認します。stdio サーバーでは標準出力がプロトコル通信に使われるため、起動スクリプトが stdout にウェルカムメッセージを出力するだけでも接続に支障が出ます。診断ログは stderr に出力してください。
入力の対応範囲を調べるのは最後です。入力を1つのファイルに絞り、ツールのパラメーターと対応対象を照らし合わせて、もう一度呼び出してください。初回の検証では、起動コマンド、実際のツール呼び出し、ソースコードの位置を含む分析結果の3つを保存しておくことをおすすめします。実際のプロジェクトに切り替えたとき、どの段階で問題が起きたかを特定しやすくなります。