Files
560674e2de feat(native): report binary hardening for ELF, PE and Mach-O (#8524)
* feat(native): report binary hardening for ELF, PE and Mach-O

Documents inspect_binary_hardening and its CLI equivalent, including
per-property states, supporting evidence, read budgets, and one report
per Mach-O slice. Explains that missing protection imports remain
unknown, signature presence does not establish validity, and hardened
runtime requires inspect_signature. Adds hardening links throughout the
documentation. The supplied diff also removes the advanced CodeQL
workflow and configuration, along with snapshot-binding mismatch
guidance.

* fix(native): validate declared payloads and dynamic tables before hardening rows

Run the shared range checks for ELF, read imports from the dynamic tables
rather than section metadata, and keep an unresolved symbol count apart from
an absent table. Check every Mach-O command before building rows and retain
only the offsets the rows need.

Make the verifier's readelf output wide, check the emitted format before
parsing Mach-O, and place the sources before the libraries in the link.

* fix(native): share Mach-O segment admission with hardening reads

A segment with a section count its cmdsize cannot hold passed the hardening
reader and could enable restrict_segment. Move the size, section count and
file range checks to a shared admission that readMachoImage and the hardening
reader both use, and pin the ELF load-size case with a regression test.

* fix(hardening): reject Mach-O section payloads past the slice and empty ELF interpreters

Segment admission never checked each section's payload range, so a
file-backed section past the slice still produced rows. Decode sections with
the section header owner and mark the slice malformed when a payload leaves
it; zero-fill and empty sections own no file bytes and are exempt.

admitInterp accepted a NUL first byte in a longer extent, which counted an
empty interpreter as PIE evidence. It now requires a nonempty path.

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

* fix(native): read CFG instrumentation from decoded GuardFlags

Use the IMAGE_GUARD_CF_INSTRUMENTED flag that guardFlagRecord already
decodes instead of masking the raw GuardFlags word a second time.

* fix(native): reject ELF table spans a second PT_LOAD remaps

The hardening reader mapped DT_STRTAB, DT_SYMTAB and hash tables through
the one PT_LOAD containing the table's first address. A second PT_LOAD
starting inside the table could map the rest of it from other file bytes
and the reader still reported parsed import evidence.

Cap each mapping at the next PT_LOAD that starts inside it, reject a
requested range that crosses that boundary, and stop hash reads at the
same limit, matching the conflicting-mapping refusal in readElfSymbols.

* fix(native): dedupe ELF note tables only on shared boundaries

The hardening reader dropped any note table whose bytes another table
already covered. A covering SHT_NOTE can hold a non-GNU note whose
descriptor is itself a complete GNU property note, while PT_NOTE names
that inner note directly. Walking only the outer stream missed the GNU
marker and reported CET disabled.

Drop an alias only when it starts and ends on boundaries of admitted
tables, which are note boundaries of the walked streams. Any other
covered alias leaves the feature rows unknown, as a partial overlap
already does.

* fix(native): admit every Mach-O symbol record after a canary match

The Mach-O stack protector scan returned as soon as it found an
undefined ___stack_chk_fail, so a later undefined symbol whose n_strx
lay outside the string table was never checked. The same damaged table
parsed or failed as malformed depending only on record order.

Keep the match and finish the bounded record walk. Records after the
match are only checked against the string table bounds, so their names
are not read or charged to the scan budget. The ELF reader already
admits its whole symbol table before matching names.

* fix(native): accept ELF load aliases with the same file translation

The hardening reader treated every PT_LOAD that starts inside a table,
or that also contains the table's address, as a conflicting mapping.
A load with the same address-to-file translation names the same file
bytes, so tables it overlaps still have one interpretation, and the
canonical ElfLoadMap already merges such spans.

Treat equivalent loads as one interpretation. A load with a different
translation, or the zero-filled tail of an equivalent load, still ends
the usable range, so a remapped table is still rejected.

* fix(native): keep same-span ELF note tables with different alignments unknown

A section and a program header that share endpoints were treated as one
note stream even when their effective note alignments differed. Walking the
same bytes at 4 and 8 can frame different notes, so dropping the second table
could hide a GNU property word and report CET or BTI as disabled.

Require matching effective alignment at both endpoints, and no alignment
change inside the covered span, before treating a table as an alias.
Otherwise mark the feature rows unknown. The fixture's .note.gnu.property
section now declares the class's note alignment, as toolchains emit it.

* refactor(native): read LC_SYMTAB through the shared fixed-word decoder

Move the Mach-O fixed uint32 command layouts out of MachoCommandNames
into domain/apple/machoLoadCommands so there is one owner of those
offsets. MachoCommandNames and the hardening reader now both decode
through it; the hardening reader keeps its own bounds and import policy.

* fix(native): skip Mach-O common definitions in canary imports

A common definition sets N_UNDF|N_EXT like an import but stores its
allocation size in n_value. An object holding only
`int __stack_chk_fail;` therefore reported stack_protector: enabled.

Require a zero n_value before an undefined external counts as an
import, for both nlist widths.

* refactor(native): read linkedit data commands through the shared fixed-word decoder

readMachoLinkeditDataCommand reproduced the dataoff/datasize offsets that
FIXED_WORD_FIELDS already owns. Take the command and decode through
decodeMachoFixedWordFields, as readMachoSymtabCommand does, keeping the
truncation and endianness behavior.

* fix(native): skip empty SHT_NOTE sections in ELF hardening

A zero-sized SHT_NOTE owns no bytes, so the section directory marks it
not file-backed and the hardening reader rejected the whole image as
malformed, while readElfImage accepted the same bytes. Skip empty note
sections before the file-backing check; they have nothing to walk.

* fix(scripts): run hardening verifier commands through the shared owner

The binary hardening verifier started its probes and compiler drivers with
raw spawnSync, which bypassed the src/process/ supervision that AGENTS.md
requires. Every launch now goes through createVerifierCommands, and the
temporary root is removed only after the owner closes cleanly.

* fix(scripts): clean up hardening verifier commands on Ctrl-C

SIGINT or SIGTERM ended Node before withVerifierCleanup ran, so detached
compiler trees and the temporary root could outlive the verifier. The
verifier now turns those signals into an abort that every owned command
receives, so cleanup closes the owner and removes the root before exit.

* fix(scripts): fail the hardening verifier when a signal lands outside a command

Only the owned commands read the interruption signal, so a SIGINT or
SIGTERM during the final cleanup or between commands was recorded and
then dropped, and the verifier exited 0. After cleanup settles, the
verifier now throws the interruption reason. A failure the operation or
its cleanup already raised still leaves first and is not replaced.

* fix(native): fail Mach-O slices with a malformed encryption command

The hardening reader turned every malformed status from the shared
encryption reader into an unknown `encrypted` row, so a short
LC_ENCRYPTION_INFO_64 or an encrypted range past the slice still left the
slice parsed with a full report.

Only two conflicting encryption commands stay an unknown row now. Any other
encryption defect fails the slice like other structural command failures.

* fix(native): ignore STB_LOCAL undefined ELF symbols as imports

A local undefined __stack_chk_fail or __memcpy_chk is never resolved
against another object, so it does not establish an external import.
Skip STB_LOCAL bindings when reading protector signs, and give the
fixture's positive symbols STB_GLOBAL binding.

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 01:07:00 +08:00

36 KiB
Raw Permalink Blame History

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

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

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

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

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

morluto%2Frea | Trendshift

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

DiscordのREAコミュニティに参加

クイックスタート · REA の仕組み · 分析できる対象 · 事例 · RL 環境を構築する · よくある質問 · ドキュメント

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、Kuna を使用でき、承認すれば 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、または Kuna;ネイティブ分析
オフライン 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
Binary hardening PIE, NX, RELRO, CFG and related header flags for ELF, PE and Mach-O Built-in static header inspection; binary hardening
Apple IPS crashes .ips metadata, threads, images, registers and crash classes Built-in static JSON inspection; Apple IPS
Linux kernel modules .modinfo keys, __versions CRCs, this_module presence, and signature trailer Built-in static ELF inspection; kernel modules
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 の検査は、指定されたファイルを読み取り、アプリケーションを実行しません。実行時キャプチャは、あなたのユーザー権限で対象を実行したり、対象とやり取りしたりします。それぞれの実行時ガイドに、どのような操作が行われるかを記載しています。

ネイティブバイナリのオフライン検査では、利用者が用意した GNU objdump と Rizin も使用できます。リバースエンジニアリングツールのガイドでは、プロバイダーのセットアップ、CLI コマンド、Evidence の制約を説明しています。REA はどちらのプロバイダーもインストールや更新を行いません。

大きなバイナリでは 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 で RL 環境を構築する

Web アプリのセッションを記録し、API をツールに変換して、AI エージェントが使える環境をエクスポートします。AgentEnv で実行し、タスクと報酬のチェックを追加して、RL の学習や評価に使えます。

環境構築ガイド · X でデモを見る

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

RL 環境を構築する

元のアプリを動かさずに、AI エージェントが issue の検索やフォルダーの作成などを練習できるローカル環境を構築します。強化学習(RL)や、エージェントのタスク遂行能力のテストに使えます。

REA は記録した API のリクエストと応答を、エージェントが呼び出せるツールに変換します。環境は記録したデータを使い、記録で効果が確認された変更だけをサポートします。

エージェントに REA を設定したら、次の URL とフォルダー操作を自分の環境に合わせて変更してください。

REA を使い、次のテスト用 Web アプリから RL 環境を構築してください。
http://127.0.0.1:3000
フォルダーの一覧表示、作成、名前変更、削除を対象にしてください。
テスト用フォルダーの作成と削除は許可します。既存のデータは変更しないでください。
my-env というフォルダーに保存し、使える操作を確認して実行方法を教えてください。
コマンドラインを使う場合

アプリのブラウザーリクエストと応答を記録したファイルがあれば、このコマンドを使えます。作成した環境の実行には AgentEnv と Docker も必要です。

rea environment-build ./session.har ./my-env --name my-env --json
agent-env run ./my-env

REA は実行可能な環境と、起動して応答することを確認する基本テストをエクスポートします。RL フレームワークに接続して、タスクの目標や報酬のチェックを定義し、学習を実行できます。

環境構築ガイド · 環境リファレンス · X でデモを見る

よくある質問

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

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

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

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

先に 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 スター 400,000 件、ありがとうございます!

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

REA の GitHub スター履歴

免責事項

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

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

違法または無許可の利用に関するプロジェクトの立場は、REA のすべてのバージョン、配布チャネル、およびプラットフォームに適用されます。各コピーには、それぞれに適用されるライセンスが引き続き適用されます。

貢献する

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

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

ライセンス

MIT

REA が作成したコードは MIT ライセンスの下で提供されます。サードパーティの素材には、それぞれのライセンスと著作権表示が引き続き適用されます。依存関係の一覧、保存されたライセンス本文、および外部ツールの利用条件については、サードパーティ通知を参照してください。

IDA Pro / Hex-Rays デコンパイラ、Hopper、JEB を含む商用ツールは、適用されるライセンスに従って合法的に入手し、使用する権限を得ている必要があります。 REA はツールのライセンス、キー、またはアクティベーションの権利を一切付与しません。試用版やデモ版も、ユーザー、機能、自動化、および出力の共有に関する制限を含め、ベンダーの利用条件に従います。クラックされたコピー、盗まれたキー、無許可のキー共有、およびライセンス制限の回避は認められていません。このガイダンスは、MIT ライセンスやサードパーティのライセンスを変更するものではありません。