Files
reverse-engineering-anything/website/public/get-started/index.html
T
ysopwnable a6ba772c08 docs(website): add Notion case study and improve onboarding
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).
2026-10-07 20:59:56 +08:00

399 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>