Files
reverse-engineering-anything/docs/readme/README_ja.md
T
4ef916da03 feat(pe): inspect import and delay-load tables (#6509)
* feat(pe): inspect import and delay-load tables

Add inspect_pe_imports / inspect-pe-imports to read PE32/PE32+ import
and delay-load directories without executing the image. The report keeps
DLL names, named and ordinal functions, ILT/IAT RVAs, and a pefile
import hash of the standard import table. A missing directory is
observed absence, not proof the image never imported APIs.

* fix(pe): default PE import fixture options

Allow peImportImage() without an argument so CLI and filesystem tests
can use the KERNEL32 sample without repeating an empty options object.

* test(pe): keep import path cases on the dedicated MCP contract

inspect_pe_imports already rejects relative MCP paths in its own
boundary test. Leave the shared absolute-path matrix to tools whose
handler issue projection matches that suite's expected shape.

* fix(native): index virtual-to-file mapping lookups

mappedFileOffset scans every mapping twice per span, so a parser that
translates one span per table entry costs sections x entries. Add
fileMappingLookup, which builds an O(n log n) interval index once and
answers each span in O(log n) with the same accept, reject and
translation results. A differential test checks it against
mappedFileOffset over randomized overlapping mappings and zero fills.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(pe): report partial import evidence and exact pefile hashes

- Withhold imphash with an explicit reason whenever the standard import
  table is partial (unreadable names or thunks, missing tables), or when
  pefile 2024.8.26 would hash a different row sequence: invalid or
  truncated names, ordinal 0, descriptors without functions, tables its
  bounds or repeat/spread heuristics discard, and its 8192-thunk import
  symbol cap. Delay-load issues do not withhold it.
- Hash ordinal imports with pefile's complete ordlookup tables and its
  ord<decimal> fallback instead of declining unmapped ordinals.
- Report a nonterminal descriptor whose FirstThunk is zero, and a
  delay-load descriptor whose IAT or INT RVA is zero, as malformed_entry
  partial coverage instead of a complete empty inventory.
- Directory evidence lists the file spans actually consumed for the
  descriptor array and terminator; discontiguous mappings produce
  separate spans and separate Evidence ranges.
- Carry exhausted limits as PeImportLimitFailure.limit and derive
  recovery from it; the fixed 16 MiB retained-text ceiling reports a
  fixed allowance instead of max_file_bytes advice.
- Translate RVAs through the indexed mapping lookup and yield with a
  cancellation check every 1024 table entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(pe): read only own ordinal tables for DLL names

DLL names such as constructor and __proto__ pass pefile's name rule but
resolved inherited object members, throwing before the ord<n> fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(native): preserve PE import facts and prove hash compatibility

* test(native): verify PE import workflows and measured costs

* refactor(native): narrow PE facts across the container union

* docs(native): record integrated PE import validation

* fix(native): bound every PE import RVA span

* docs(native): measure RVA guard completed workflows

* fix(pe): reconcile import coverage with retained rows

* fix(pe): retain partial imports at descriptor mapping gaps

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-10-24 11:44:12 +08:00

31 KiB
Raw Blame History

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano · Ελληνικά · മലയാളം · Roman Urdu

REA:あらゆるものをリバースエンジニアリング

バイナリ、アプリケーション、実行時の動作を、ひとつの MCP でリバースエンジニアリング。

気に入った機能を見つけたら、その仕組みをバイナリのレベルまで理解する。

npm version MCP tool catalog Node.js requirements skills.sh MIT license Discord

morluto%2Frea | Trendshift

ウェブサイト · ガイド · 事例

クイックスタート · REA の仕組み · 分析できる対象 · 事例 · よくある質問 · GNU objdump・Rizin ツール · ドキュメント

npx rea-agents setup

Important

REA の公式配布元: morluto/rea, rea.tools, rea-agents (npm). インストールとリリースのリンクは、これらの公式配布元からたどってください。似たリポジトリ名やコピーされた README だけでは、公式の配布物とは確認できません。


REA が Hopper 内で分析ブリッジを起動し、ネイティブバイナリを調べる様子



Discord
リバースエンジニアリングのコミュニティに参加

Discord · 質問と回答 · 成果の共有


アプリに、自分の製品にも取り入れたい機能を見つけましたか?エージェントに REA で調査を依頼してください。ソースコードがなくてもアプリを調べ、機能の仕組みを説明し、根拠を示したうえで、あなたのプロジェクト向けに実装できます。

REA はエージェントを分析ツールにつなぎ、ネイティブバイナリ、JavaScript や Electron のアプリ、.NET アセンブリ、ウェブサイトを調べられるようにします。同じツールをターミナルからも使えます。分析はローカルで実行され、結果には各結論を裏付ける根拠と制限事項が含まれます。

セットアップはエージェントに REA を登録し、対応するワークフロー指示をインストールします。ネイティブ解析には既存の Hopper、Ghidra、IDA を使用でき、承認すれば Hopper をインストールできます。静的 JavaScript 解析にネイティブ解析エンジンは不要です。

**REA のウェブサイト**で、セットアップ手順、図解ガイド、実際の事例を確認できます。

クイックスタート

Linux での Ghidra、JADX、ファームウェアツールの起動と静的 JavaScript/Electron 解析には、プロセス所有権の確認用に、REA の PATH 上に procps 互換の ps が必要です。対処方法はインストールガイドの Linux 前提条件を参照してください。

エージェントを設定する

Node.js と npm がインストールされている環境で実行します。

npx rea-agents setup

使うエージェントを選び、予定されている変更を確認して承認してください。セットアップは REA の MCP サーバーと対応するワークフローの手順を追加し、既存の設定をバックアップします。完了後にエージェントを再起動してください。

セットアップは Claude Code、Codex、Cursor、Gemini CLI、Grok Build、およびその他のエージェントに対応しています。プロバイダーの設定と MCP の手動登録については、インストールとセットアップを参照してください。

MCP は既定でコンパクトな入力スキーマを使用します。完全なフィールド説明と入れ子の検証情報が必要な場合は、MCP 登録に REA_MCP_INPUT_SCHEMA_PROFILE=full を設定してください。どちらも全ツールと同じ正規サーバー検証を維持します。詳細は MCP 契約ガイドを参照してください。

エージェントに依頼する

Notes アプリの検索機能の仕組みを調べ、根拠を示して、私のプロジェクトにも同様の機能を実装してください。

Notes を対象のアプリに置き換え、理解したい機能を指定してください。

ターミナルを使う

展開済みの JavaScript/Electron アプリのディレクトリ、または ASAR を調べます。

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

結果にはモジュール、インポート、Electron の境界と、それらの根拠が含まれます。パスは対象に合わせて変更してください。Windows では、たとえば "D:/apps/example" を指定します。

日常的に使う場合は、rea コマンドをインストールできます。

npm install --global rea-agents
rea --help

ネイティブ分析には、先にプロバイダーの設定が必要です。ネイティブ分析のコマンド、プロバイダーの選択、スナップショット、スクリプトでの利用は、CLI と Evidence のガイドを参照してください。

REA を更新する

REA は更新が速く、新しいリリースには頻繁にバグ修正が含まれます。インストールしたバージョンを最新に保ってください。

npm install --global / bun add --global でインストールした CLI の場合:

rea update

rea --update は rea update の別名で、同じグローバル出力オプションを受け付けます。更新コマンドが保持する stdout/stderr は合計 4 MiB までです。大きすぎるメタデータは終了後に拒否され、詳細なインストール出力は制限付きで保持されます。進捗出力は端末のバックプレッシャーに従い、送信済みの書き込み完了を待ちます。

Bun のグローバル更新には Bun 1.2.17 以降が必要です。古い場合は、rea update の前に Bun を手動で更新してください。

エージェントの登録とスキルを更新するには、更新処理が表示するセットアップコマンドを実行してください。

npx を使っている場合は、次のコマンドでエージェントの設定を更新します。

npx rea-agents@latest setup

設定の変更を確認し、エージェントを再起動してください。単発の CLI 操作では、npx rea-agents@latest に続けてコマンドを指定します。

Bun では npx rea-agents@latest の代わりに bunx rea-agents@latest を使ってください。

REA の仕組み

エージェントは MCP 経由で REA を呼び出し、対象を調べて関連するコードを追跡します。REA は調査結果と根拠を返します。エージェントはそれを使って追加の質問をしたり、動作を説明したり、実装を書いてテストしたりします。CLI コマンドも同じワークフローを使います。

REA の調査フロー:エージェントがローカルの対象について質問し、REA が分析ツールで調査・追跡します。エージェントは返されたコード、参照、未解明の点を使い、説明、実装、テストを行います。

原寸大の図を開く。

分析できる対象

REA には Node.js 22.x(>=22.23.4)、24.x(>=24.22.1)、または 26+ (>=26.12.1) と npm が必要です。追加のツールや対応ホストは、対象によって異なります。

対象 REA が返すもの 要件とガイド
ネイティブバイナリ 疑似コード、アセンブリ、文字列、シンボル、呼び出し、参照 Hopper、Ghidra、または IDA;ネイティブ分析
オフライン ELF レイアウト セクション、セグメント、元のシンボル/再配置情報、静的解析によるセキュリティ対策の候補 Linux x64 で利用者が用意する pwntools;バイナリ診断
PE certificates Authenticode WIN_CERTIFICATE entries and PKCS#7 signer/X.509 identity fields Built-in static PE inspection; PE certificates
PE imports Import and delay-load DLL names, ordinals, IAT RVAs and pefile import hash Built-in static PE inspection; PE imports
EVM バイトコード ディスパッチセレクター、バイトオフセット、推定された引数と状態変更の可否 Linux x64 上のローカルの生バイト/16 進数の入力ファイル;オフライン EVM ガイド
Rust binaries Embedded cargo-auditable dependency list Rust binaries
ELF notes PT_NOTE/SHT_NOTE owners, types, GNU build-id and ABI-tag fields Built-in static ELF inspection; ELF notes
Erlang BEAM IFF chunks, atoms, exports, and tables Built-in static BEAM inspection; Erlang BEAM
記録済みの Linux クラッシュ 生の note レコード、記録された全スレッドのレジスター/シグナル、任意のマッピング候補 Linux x64 で利用者が用意する pwntools;GDB/pwndbg は任意;記録済みクラッシュ
デスクトップのインストール先 ランタイム候補、根拠ファイル、コンポーネントの目印、次の調査手順 上限付きのディレクトリ・ヘッダー検査;デスクトップアプリ
JavaScript / Electron モジュール、インポート、ソースマップ、ルート、IPC、ネイティブアドオンの関係 Node.js と npm;アプリケーション分析; Linux: procps ps
ウェブサイト ページ構造、スクリプト、ネットワークの観測結果、依頼されたスクリーンショット Chrome 系ブラウザー;ブラウザー分析
保存済みのネットワークキャプチャ リクエスト、レスポンス、取得可能なペイロード、ソース内の位置 HAR / Fiddler Everywhere SAZ;mitmproxy ネイティブ形式のキャプチャには Linux 上の mitmdump;キャプチャガイド
パケットキャプチャ エンドポイント、DNS、TLS SNI、プロトコル分布、HTTPリクエスト 呼び出し側が用意した tshark と capinfos;pcapガイド
.NET アセンブリ メタデータ、CIL 命令、宣言されたネイティブ依存関係、ビルドの比較 静的な検査;マネージドコードのガイド
PyInstaller CArchive, PYZ, Python bytecode Static inspection; Python packaged applications
Android APK マニフェストの宣言、クラス、逆コンパイルされたメソッド、参照 Linux/macOS/Windows x64 上のヘッドレス JADX と完全な JDK;Android ガイド
Android デバイス デバイス、パッケージ、プロセス、ログ、ダンプ、スクリーンキャプチャ、APK/ファイル転送 呼び出し側が用意した adb(エミュレーターまたは実機);ADB ガイド
JEBプロジェクト エンジンによるプロジェクトユニット、アーティファクトのダイジェスト、型/メソッドの擬似コード 呼び出し側が起動し MCP を提供する JEB クライアント(REA_JEB_MCP_URL で選択);JEB ガイド
Android リソース デコードされたマニフェスト、文字列テーブル、ロケール、バージョン情報 呼び出し側が用意した Apktool ランチャー;リソースガイド
Flutter アプリ Dart スナップショットハッシュ、ABI ごとのライブラリダイジェスト、エンジンビルドの来歴 不要(静的 APK 解析);Flutter ガイド
ファームウェア 領域、抽出結果、ネイティブ分析への引き継ぎ Linux 上の Binwalk / Unblob;ファームウェアガイド
記録済みパケット 選択フィールド、繰り返し値、フィルター、デコード指定 Linux: TShark 4.x + prlimit; キャプチャガイド
記録済みロジック信号 デコーダ注釈、サンプル範囲、診断情報 Linux: sigrok-cli 0.7.2 + prlimit; 信号記録ガイド
パッケージとリソース ファイル一覧、ダイジェスト、plist、Apple バンドルの構造、抽出されたリソース アーティファクトと JavaScript のガイド、Apple アプリケーション
プロセスの動作 ターミナル出力、対話、終了とファイルシステムの観測結果、実行の比較 ネイティブ PTY を備えた Linux/macOS;プロセスキャプチャ
Go バイナリ 埋め込みコンパイラバージョン、モジュール、置換、ビルド設定 組み込みの静的解析 ELF/PE/thin Mach-O; Go のインストールは不要
SQLite データベース テーブル、列、インデックス、ビュー、トリガー、選択した通常テーブルの行 ローカル DB/WAL スナップショット。ネイティブ SQLite 制限 API を備える Node.js 24.x >=24.15 または 26+
GPU コードオブジェクト CUDA/HIP ターゲット、選択したカーネルの引数とリソース、保持された PTX 組み込みの静的解析 ELF/PE/fatbin/CUBIN/PTX; GPU
モデルファイル GGUF / safetensors メタデータ、テンソル宣言、導出した合計 ヘッダー解析。任意でファイル全体をハッシュ; GGUF / safetensors
IL2CPP メタデータ Unity global-metadata.dat のアセンブリ、型・メソッド名、インデックス範囲 バージョン 24、27、29、31、39 を静的デコード。Unity 不要
Godot PCK アーカイブ一覧と展開、元のヘッダー・ディレクトリ情報、選択内容の識別情報 形式 2、3、4 を静的解析。Godot 不要
WASM アーティファクト 検証、セクション、正確なインポート/エクスポート WAT 形式、デコード済み WAT 利用者が用意 WABT 1.0.42; inspect_wasm_artifact
APK 署名 v1/v2/v3/v3.1 署名者、証明書指紋、鍵ローテーション、ダイジェストの自己整合性 組み込みの静的解析; inspect_apk_signature

静的な JavaScript と .NET の検査は、指定されたファイルを読み取り、アプリケーションを実行しません。実行時キャプチャは、あなたのユーザー権限で対象を実行したり、対象とやり取りしたりします。それぞれの実行時ガイドに、どのような操作が行われるかを記載しています。

大きなバイナリでは REA_GHIDRA_STARTUP_TIMEOUT_MS または REA_HOPPER_STARTUP_TIMEOUT_MS でプロバイダーの起動期限を延長できます。

対応するネイティブ形式とホストは、プロバイダーによって異なります。Hopper と Ghidra のセットアップ、IDA ガイド、Kuna、Windows 向け Ghidra の実験的対応を参照してください。Ghidra は 16 ビット DOS 分析にも対応しています。プロバイダーの選択は CLI ガイドを参照してください。最新の npm リリース以降に追加された機能については、リリースでの利用可否を確認してください。

事例

DX-Ball の音声パン、Notion のクリップボードブリッジ、TH04 の弾幕リングの事例を表すイラスト

DX-Ball:音声のパン計算を再構築する

音声の呼び出しから位置をパンに変換する補助関数をたどり、命令を調べ、不完全な疑似コードを C に書き直します。再構築した実装は、元の x86 に対する 3,205 ケースの検証を通過し、コンパイル後の関数の全 63 バイトを再現しています。

事例を読む · 再構築リポジトリ

Notion:Electron のクリップボードブリッジを追跡する

レンダラーのクリップボード API を見つけ、preload と IPC を経由してメインプロセスまでたどり、リッチなクリップボード形式を調べます。

事例を読む

TH04:DOS の弾幕リングの計算を復元する

元の PC-98 ゲームの 16 ビット命令を調べ、固定角度と自機を狙う角度の計算を復元し、再構築した C++ を当時のコンパイラーの出力と比較します。

事例を読む · 再構築リポジトリ

REA で興味深い対象を調べたら、ぜひ共有してください。issue または pull request に、対象、調べたかったこと、REA がどう役立ったか、何が分かったかを記載してください。

よくある質問

どのエージェントで REA を使えますか?

ローカル MCP サーバーに対応するエージェントなら使えます。セットアップは対応エージェントを設定します。その他のクライアントでは、MCP の手動登録を利用できます。

Hopper、Ghidra、IDA は必要ですか?

深いネイティブ分析には、そのいずれかを使います。静的な JavaScript と .NET の検査には、ネイティブ分析エンジンは必要ありません。セットアップは承認後に Hopper をインストールできます。Ghidra と IDA は既存のインストールを使います。プロバイダーのセットアップを参照してください。

先に Hopper を起動する必要はありますか?

REA は必要な操作の際に Hopper を起動します。macOS では、初回起動時にデモモードを選ぶか、ライセンスを有効化するよう求められることがあります。Hopper の起動とトラブルシューティングを参照してください。

skills.sh からスキルをインストールすると何ができますか?

スキルはエージェントに調査の手順を提供します。npx rea-agents setup で REA の MCP サーバーを登録し、対応する手順をインストールしてから、エージェントを再起動してください。スキルのみのインストールを参照してください。

REA はどのようなコードを返しますか?

ネイティブ分析は疑似コードとアセンブリを返します。JavaScript/Electron 分析はモジュールとその関係を復元します。エージェントはその結果を使って実装を書き、テストします。事例に具体的な手順があります。

REA はアプリをアップロードしますか?

REA は対象をローカルで分析します。エージェントはツールの結果を受け取り、そのモデルプロバイダーには独自のデータポリシーがあります。

バグに遭遇したらどうすればよいですか?

まず更新してください。最近のリリースですでに修正されている可能性があります。

npm でインストールした CLI の場合:

rea update

npx でエージェントを設定している場合:

npx rea-agents@latest setup

エージェントを使っている場合は、設定の更新を完了し、再起動してください。同じタスクをもう一度試し、問題が続く場合は issue を作成して、REA のバージョン、対象の種類、再現手順、エラー出力を記載してください。

ドキュメント

まずはウェブサイトの実践ガイドを参照してください。正確なオプション、前提条件、結果の契約については、以下を参照してください。

脆弱性の報告は SECURITY.md に従ってください。

スター履歴

🎉 GitHub スター 300,000 件、ありがとうございます!

REA の利用、バグ報告、機能の要望、ビルドのテスト、修正への貢献に感謝します。

REA の GitHub スター履歴

免責事項

責任ある利用については DISCLAIMER.md を参照してください。

REA は、法令に従った研究、教育、相互運用性の確保、ソフトウェアの保存、および所有するソフトウェアや調査を許可されたソフトウェアの解析を目的としています。

The project's position on illegal or unauthorized use covers all REA versions, distribution channels, and platforms; each copy retains its applicable licenses.

貢献する

REA への貢献を歓迎します!issue を作成してバグや機能の提案を報告したり、pull request を送信してコードやドキュメントを改善したりできます。

開発環境とチェックは CONTRIBUTING.md、検証レーンはテストガイド、プロジェクト構造はアーキテクチャ図を参照してください。

ライセンス

MIT

REA-authored code is licensed under MIT. Third-party material retains its own licenses and copyright notices; see Third-party notices for the dependency inventory, preserved license texts, and external-tool terms.

You must legally obtain and be authorized to use commercial tools, including IDA Pro / Hex-Rays decompilers, Hopper, and JEB, under their applicable licenses. REA grants no tool license, key, or activation entitlement. Trials and demos remain subject to vendor terms, including user, feature, automation, and output sharing restrictions. Cracked copies, stolen keys, unauthorized key sharing, and bypassing license restrictions are not authorized. This guidance does not amend MIT or third-party licenses.