mirror of
https://github.com/morluto/rea.git
synced 2026-11-10 08:47:00 +00:00
The Electron guide currently uses a teaching fixture. Add a real Notion clipboard case with REA findings, short source excerpts and responsive figures, alongside the existing DX-Ball reconstruction. - Trace the saved Notion 7.6.1 preload API through its wrappers to the clipboard receiver. Attribute the separate web-cache module probes to their original harness. Public content uses relative source locations and generic example data; packages and complete captures stay local. - Add a Showcases index and links from the homepage and JavaScript guide. Simplify homepage copy while preserving the approved headline and closing question. - Show copyable agent installation prompts and the direct setup command. Keep terminal cursors blinking consistently and respect reduced-motion settings. - Provide one Notes example ZIP. Generate it from the six public source files before website checks and manual Pages deployment; verify its contents against the source. Pages remains manual-only. Validation: - `npm run check:fast` - `python3 scripts/prepare-website.py` and `python3 scripts/verify-website.py` - Browser checks at `/` and `/rea/`: downloads, prompt/command copying, responsive layouts, keyboard navigation, reduced motion and DX-Ball comparison controls. - Published REA 4.1.0 preload analysis and feature traces; source/claim/privacy review. - Real Hopper/Ghidra verification: not performed (website-only change).
399 lines
17 KiB
HTML
399 lines
17 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Get started — REA</title>
|
||
<meta
|
||
name="description"
|
||
content="Connect REA to your coding agent or inspect a local JavaScript or Electron app from the terminal. Setup, first questions and native provider guides."
|
||
/>
|
||
<meta name="theme-color" content="#ffffff" />
|
||
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml" />
|
||
<link rel="stylesheet" href="../assets/styles.css" />
|
||
<script src="../assets/main.js" defer></script>
|
||
</head>
|
||
<body>
|
||
<a class="skip-link" href="#main">Skip to content</a>
|
||
<header class="site-header">
|
||
<div class="container header-inner">
|
||
<a class="brand" href="../" aria-label="REA home"
|
||
><span class="brand-name">REA</span
|
||
><span class="brand-caption">Reverse Engineer Anything</span></a
|
||
>
|
||
<nav class="navigation" aria-label="Main navigation">
|
||
<a href="../showcase/">Showcases</a
|
||
><a class="nav-start" href="./" aria-current="page">Get started</a
|
||
><a href="../guides/">Guides</a
|
||
><a href="https://github.com/morluto/rea">GitHub</a>
|
||
</nav>
|
||
</div>
|
||
</header>
|
||
<main id="main" class="container">
|
||
<div class="page-heading">
|
||
<p class="breadcrumb"><a href="../">Home</a> / Get started</p>
|
||
<h1>Start with a question.</h1>
|
||
<p class="lede">
|
||
Connect REA to your coding agent, or inspect a local app from your
|
||
terminal.
|
||
</p>
|
||
<p class="requirements">
|
||
You'll need Node.js 22 (22.19+), 24 (24.11+) or 26+, and npm.
|
||
</p>
|
||
</div>
|
||
<div class="article-layout">
|
||
<nav class="contents" aria-label="On this page">
|
||
<p>Choose your starting point</p>
|
||
<ul>
|
||
<li><a href="#agent">With your agent</a></li>
|
||
<li><a href="#terminal">From the terminal</a></li>
|
||
<li><a href="#native">Native binaries</a></li>
|
||
<li><a href="#help">Getting help</a></li>
|
||
</ul>
|
||
</nav>
|
||
<article class="article" aria-label="REA getting started guide">
|
||
<section class="article-section" id="agent">
|
||
<h2>With your agent</h2>
|
||
<p>
|
||
Run setup to connect REA to your coding agent. Client choices
|
||
include Claude Code, Codex, Cursor, Gemini CLI, Windsurf and other
|
||
supported MCP clients.
|
||
</p>
|
||
<div class="agent-terminal">
|
||
<div class="terminal-header">
|
||
<span class="terminal-title"
|
||
><span class="terminal-dots" aria-hidden="true"
|
||
><i></i><i></i><i></i></span
|
||
>Your coding agent</span
|
||
>
|
||
<button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="agent-install-prompt"
|
||
aria-label="Copy REA installation prompt"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<p class="terminal-prompt">
|
||
<span class="prompt-symbol" aria-hidden="true">›</span
|
||
><span id="agent-install-prompt"
|
||
>Install REA and connect it to this coding agent using npx
|
||
rea-agents@latest setup. Show me the setup plan for approval,
|
||
then verify the installation.</span
|
||
><span class="terminal-cursor" aria-hidden="true"></span>
|
||
</p>
|
||
</div>
|
||
<details class="evidence-details">
|
||
<summary>Or run setup yourself</summary>
|
||
<div class="code-block">
|
||
<div class="code-header">
|
||
<span>Terminal</span
|
||
><button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="agent-setup"
|
||
aria-label="Copy agent setup command"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<pre><code id="agent-setup">npx rea-agents@latest setup</code></pre>
|
||
</div>
|
||
</details>
|
||
<p>
|
||
Choose your client and review the setup plan. REA adds its MCP
|
||
connection and the matching investigation skill, keeping a backup
|
||
of existing configuration. It asks before applying the changes.
|
||
</p>
|
||
<p>
|
||
Restart your client when setup finishes. Give your agent a target
|
||
path and a specific question. For a JavaScript or Electron app,
|
||
you might start with:
|
||
</p>
|
||
<blockquote class="prompt">
|
||
<p>
|
||
Look at <code>/absolute/path/to/app</code> and find how it
|
||
exports data. Show the entry points, calls and dependencies
|
||
involved, with the source locations for your findings.
|
||
</p>
|
||
</blockquote>
|
||
<p>
|
||
Replace the path with your local target. Read the findings, then
|
||
ask a narrower follow-up about a function or connection you want
|
||
to understand.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="article-section" id="terminal">
|
||
<h2>From the terminal</h2>
|
||
<p>
|
||
You can start with a JavaScript or Electron application folder or
|
||
ASAR archive. This path uses Node.js and npm and reads the app
|
||
without running it.
|
||
</p>
|
||
<div class="code-block">
|
||
<div class="code-header">
|
||
<span>Static application analysis</span
|
||
><button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="terminal-analysis"
|
||
aria-label="Copy JavaScript analysis command"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<pre><code id="terminal-analysis">npx -y rea-agents@latest analyze-javascript-application \
|
||
/absolute/path/to/app --json</code></pre>
|
||
</div>
|
||
<p>
|
||
Replace the path with your extracted app directory or
|
||
<code>.asar</code> file. On Windows, a path such as
|
||
<code>"D:/apps/example"</code> works here.
|
||
</p>
|
||
<p>
|
||
The result includes the application's identity, recovered module
|
||
relationships and evidence locations. It also records
|
||
relationships that remain unresolved. Use those findings to choose
|
||
where to investigate next.
|
||
</p>
|
||
<p>
|
||
If you'd like a permanent <code>rea</code> command in your shell:
|
||
</p>
|
||
<div class="code-block">
|
||
<div class="code-header">
|
||
<span>Install the CLI</span
|
||
><button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="install-cli"
|
||
aria-label="Copy CLI installation command"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<pre><code id="install-cli">npm install --global rea-agents</code></pre>
|
||
</div>
|
||
<p>
|
||
<a href="../guides/javascript/"
|
||
>Continue with the JavaScript application guide</a
|
||
>
|
||
</p>
|
||
</section>
|
||
|
||
<section class="article-section" id="native">
|
||
<h2>Working with native binaries</h2>
|
||
<p>
|
||
REA connects your agent to a local analysis provider. Choose the
|
||
tool you already use, configure its connection, then ask about
|
||
your executable or library.
|
||
</p>
|
||
<div class="provider-list">
|
||
<div class="provider">
|
||
<h3>Ghidra</h3>
|
||
<div>
|
||
<p>
|
||
Use an existing Ghidra 12.1.x installation and a 64-bit JDK
|
||
21 or newer on Linux x64 or macOS x64/arm64. Set the paths
|
||
before running setup:
|
||
</p>
|
||
<details class="evidence-details">
|
||
<summary>Connect your Ghidra installation</summary>
|
||
<div class="code-block">
|
||
<div class="code-header">
|
||
<span>Ghidra connection · macOS / Linux</span
|
||
><button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="ghidra-connect"
|
||
aria-label="Copy ghidra connection · macos / linux"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<pre><code id="ghidra-connect">export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC
|
||
export JAVA_HOME=/absolute/path/to/jdk-21
|
||
npx -y rea-agents@latest doctor --provider ghidra --json
|
||
npx rea-agents@latest setup</code></pre>
|
||
</div>
|
||
<p>
|
||
Replace both paths with your existing installations. Setup
|
||
checks them and records valid settings for your selected
|
||
client. On macOS, use a Ghidra package with the native
|
||
decompiler matching your host architecture.
|
||
</p>
|
||
</details>
|
||
</div>
|
||
</div>
|
||
<div class="provider">
|
||
<h3>Hopper</h3>
|
||
<div>
|
||
<p>
|
||
Connect Hopper on macOS or Linux. Run the setup command
|
||
above; it detects an existing installation or offers an
|
||
installation plan for your approval.
|
||
</p>
|
||
<p>
|
||
On macOS, complete Hopper's first-run choice of demo mode or
|
||
license activation before an unattended analysis.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="provider">
|
||
<h3>IDA</h3>
|
||
<div>
|
||
<p>
|
||
The verified IDA setups use Windows, with an existing MCP
|
||
registration for an attached GUI or a headless database.
|
||
Linux and macOS headless analysis remains unverified.
|
||
</p>
|
||
<details class="evidence-details">
|
||
<summary>Connect an existing IDA MCP registration</summary>
|
||
<p>
|
||
Keep the upstream server's working <code>command</code>,
|
||
<code>args</code> and optional <code>env</code> in a JSON
|
||
file. An existing <code>mcpServers</code> object with an
|
||
<code>ida-pro-mcp</code> entry is also accepted. Point REA
|
||
at that file before setup:
|
||
</p>
|
||
<div class="code-block">
|
||
<div class="code-header">
|
||
<span>IDA connection · Windows PowerShell</span
|
||
><button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="ida-connect"
|
||
aria-label="Copy IDA connection for Windows PowerShell"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<pre><code id="ida-connect">$env:REA_IDA_MCP_CONFIG = "C:/analysis/ida-mcp.json"
|
||
$env:REA_ANALYSIS_PROVIDER = "ida"
|
||
npx -y rea-agents@latest doctor --provider ida --json
|
||
npx rea-agents@latest setup</code></pre>
|
||
</div>
|
||
<p>
|
||
The attached profile uses upstream legacy 1.4.0 tools with
|
||
the original binary already open in IDA. The headless
|
||
profile uses the upstream database-supervisor API and a
|
||
registration with <code>"mode": "headless"</code>; real
|
||
verification covers an IDA 9.3 Windows x64 supervisor.
|
||
Doctor checks the registration without starting IDA.
|
||
</p>
|
||
<p>
|
||
Give REA the original executable path, with
|
||
<code>--provider ida</code> in a CLI query. For an agent,
|
||
include <code>REA_IDA_MCP_CONFIG</code> in the REA
|
||
registration's environment and select IDA when opening the
|
||
binary.
|
||
</p>
|
||
</details>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p class="small-heading">
|
||
For an existing Ghidra setup, inspect a function with:
|
||
</p>
|
||
<div class="code-block">
|
||
<div class="code-header">
|
||
<span>Function analysis</span
|
||
><button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="native-function"
|
||
aria-label="Copy native function analysis command"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<pre><code id="native-function">rea function /absolute/path/to/program main \
|
||
--provider ghidra --json</code></pre>
|
||
</div>
|
||
<p>
|
||
Replace <code>main</code> with the function name or address you
|
||
want to inspect. Each CLI invocation imports and analyzes the
|
||
target in its own session. Your agent's MCP queries reuse the
|
||
imported binary while that session is open.
|
||
</p>
|
||
<p>
|
||
<a href="../guides/native/">Follow a native analysis example</a>
|
||
to see how the function result leads to a recovered calculation.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="article-section" id="help">
|
||
<h2>Getting help</h2>
|
||
<h3>If your agent doesn't see REA</h3>
|
||
<p>
|
||
Restart or reconnect the client after setup. To check its
|
||
registration, use a client-scoped report; for Codex:
|
||
</p>
|
||
<div class="code-block">
|
||
<div class="code-header">
|
||
<span>Check one client</span
|
||
><button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="client-doctor"
|
||
aria-label="Copy client diagnosis command"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<pre><code id="client-doctor">npx -y rea-agents@latest doctor --client codex --json</code></pre>
|
||
</div>
|
||
<h3 class="small-heading">If a provider needs attention</h3>
|
||
<p>Check the provider you're using. For Ghidra:</p>
|
||
<div class="code-block">
|
||
<div class="code-header">
|
||
<span>Check one provider</span
|
||
><button
|
||
class="copy-button"
|
||
type="button"
|
||
data-copy="provider-doctor"
|
||
aria-label="Copy provider diagnosis command"
|
||
>
|
||
Copy
|
||
</button>
|
||
</div>
|
||
<pre><code id="provider-doctor">npx -y rea-agents@latest doctor --provider ghidra --json</code></pre>
|
||
</div>
|
||
<p>The report gives the failed check and a suggested next step.</p>
|
||
<ul class="reading-list">
|
||
<li>
|
||
<a href="../guides/">Choose an investigation guide</a
|
||
><span
|
||
>Worked examples for a binary, an Electron app and a
|
||
browser.</span
|
||
>
|
||
</li>
|
||
<li>
|
||
<a href="https://github.com/morluto/rea/issues">GitHub issues</a
|
||
><span>Report a problem with the command and diagnostics.</span>
|
||
</li>
|
||
<li>
|
||
<a href="https://discord.gg/GkcryMnJDM">REA community</a
|
||
><span>Questions, investigations and work in progress.</span>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
</article>
|
||
</div>
|
||
</main>
|
||
<footer class="site-footer">
|
||
<div class="container footer-inner">
|
||
<p>REA · Reverse Engineer Anything</p>
|
||
<div class="footer-links">
|
||
<a href="https://github.com/morluto/rea">Source</a
|
||
><a href="https://github.com/morluto/rea/blob/main/LICENSE"
|
||
>MIT license</a
|
||
><a href="https://discord.gg/GkcryMnJDM">Community</a>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
<p class="sr-only" id="copy-status" role="status" aria-live="polite"></p>
|
||
</body>
|
||
</html>
|