This AI Tool Can Reverse Engineer Almost Any Software!

Meet REA_ The Open-Source Tool Every Developer Should Know
REA Explained: Reverse Engineer Anything with Agents
Tool deep dive

REA: Reverse Engineer Anything with Agents

One MCP server that lets an AI agent investigate native binaries, Electron and JavaScript apps, .NET assemblies, Android packages, websites and more, and report back with evidence.

In one sentence: you see a feature in an app you like, ask your agent to investigate it with REA, and get an explanation of how it works, the evidence behind that explanation, and optionally a working version for your own project.

1. What REA is

REA stands for “Reverse Engineer Anything.” It is an open-source project (MIT licensed) that connects an AI coding agent to a collection of analysis tools through the Model Context Protocol (MCP). Instead of you manually opening a disassembler, searching strings and following call chains, your agent does the legwork and REA supplies the tools and the structure.

The project’s promise is simple: see a feature you like, understand how it works down to the binary level. Analysis runs locally on your machine. The agent receives tool results, and the model provider you use has its own data policy, which is worth remembering when you pick targets.

Agent-drivenYour agent calls REA tools, reads results and asks follow-up questions on its own.
Evidence-firstResults carry the evidence and limitations behind each conclusion.
LocalTargets are analyzed on your machine rather than uploaded to a REA service.
Also a CLIThe same workflows are available from the terminal for scripting.

2. The investigation flow

Every REA investigation follows the same loop. Your agent asks a question about a local target. REA inspects and traces the target using the right analysis tool. The findings return as code, references and a list of unknowns. The agent then explains the behavior, implements it, and tests the result.

Youask a question Agentplans, calls MCP REApicks analysis tool Targetbinary, app, site Evidencecode, refs, unknowns Resultexplain, build, test
The loop repeats: unknowns in the evidence become the next question.

Why unknowns matter

A good reverse-engineering report separates what is known from what is guessed. REA’s results include limitations and unknowns so the agent does not present a plausible story as fact. When something is missing, the agent can run another probe instead of inventing an answer.

3. Quick start

You need Node.js and npm. REA requires Node.js 22.x (22.19 or newer), 24.x (24.11 or newer), or 26 and above.

  1. Run setup. This registers REA’s MCP server with your agent and installs matching workflow instructions.
    npx rea-agents setup
  2. Review and approve. Choose your agents and read the proposed changes. Setup keeps backups of existing configuration.
  3. Restart your agent so it picks up the new server.
  4. Ask a question.
    Understand how search works in the Notes app,
    show me the evidence, and build a similar
    feature for my project.

Setup supports Claude Code, Codex, Cursor, Gemini CLI, Grok Build and other agents. Any agent that supports local MCP servers can use REA through manual registration.

Using the terminal

To inspect an extracted JavaScript or Electron app directory, or an ASAR archive:

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

The result lists modules, imports, Electron boundaries and the evidence for each. To install the rea command permanently:

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

Keeping it updated

REA changes quickly, with frequent fixes. For a global install run rea update. If you use npx, run npx rea-agents@latest setup and restart your agent. Bun global updates need Bun 1.2.17 or later.

Linux note: Ghidra, JADX, firmware tool launches and static JavaScript or Electron analysis need a procps-compatible ps on the PATH for process ownership checks.

4. What you can analyze

REA covers a wide range of targets. Some need nothing beyond Node.js, others need a provider such as Hopper, Ghidra or IDA. Swipe the tables sideways on small screens.

Built-in, no extra tool needed

TargetWhat REA returns
Desktop installationsRuntime candidates, supporting files, component markers and next probes
Go binariesCompiler version, modules, replacements and build settings
Rust binariesEmbedded crate names, versions, sources and dependency edges
IL2CPP metadataUnity assembly images, type and method names, index ranges
Godot PCKArchive inventory, extraction and header facts
.NET assembliesMetadata, CIL instructions, native dependencies, build comparisons
Flutter appsDart snapshot hash, per-ABI library digests, engine provenance
JavaScript / ElectronModules, imports, source maps, routes, IPC and native add-ons

Needs a caller-supplied tool

TargetReturnsNeeds
Native binariesPseudocode, assembly, strings, symbols, calls, referencesHopper, Ghidra or IDA
Android APKsManifest, classes, decompiled methods, referencesHeadless JADX and a full JDK
Android devicesPackages, processes, logs, dumps, transfersadb
WebsitesPage structure, scripts, network observations, screenshotsA Chrome-family browser
Network capturesRequests, responses, payloads, source locationsHAR or Fiddler SAZ files
FirmwareRegions, extraction results, handoffs to native analysisBinwalk or Unblob (Linux)
WASM artifactsValidation, sections, import and export forms, WATWABT 1.0.42
Packet capturesEndpoints, DNS, TLS SNI, protocol distributiontshark and capinfos
Process behaviorTerminal output, interactions, exit and filesystem observationsLinux or macOS with a PTY
SQLite databasesTables, columns, indexes, views, selected rowsNode.js 24.15+ or 26+

There are further specialist lanes too: offline ELF layout, EVM bytecode, recorded Linux crashes, JEB projects, Android resources through Apktool, and recorded logic signals through sigrok. Each has its own guide in the project documentation.

5. Choosing the right analysis path

What is the target? Native binaryneeds a provider JS / Electronstatic, no engine .NET assemblystatic, no engine Website / APKbrowser or JADX Hopper / Ghidra / IDA Reads files, never runs the app Observe or decompile
A simplified map. Static inspection reads files without executing them.

Static versus runtime

Static JavaScript and .NET inspection read the supplied files without running the application. Runtime capture, by contrast, runs or interacts with the target using your user permissions. Each runtime guide describes its effects, so read it before pointing REA at something you do not trust.

6. Providers for native analysis

For deep native work REA drives an existing reverse-engineering suite rather than replacing it.

ProviderNotes
HopperREA launches it when needed. Setup can install it with your approval. On macOS a first-run dialog may ask you to choose demo mode or enter a license.
GhidraUses your existing installation. Has experimental Windows support and 16-bit DOS analysis.
IDAUses your existing installation, with an optional native MCP bridge.
objdump and RizinSupported for offline inspection when you supply them. REA does not install or update either.

For large binaries, raise the startup deadline with REA_GHIDRA_STARTUP_TIMEOUT_MS or REA_HOPPER_STARTUP_TIMEOUT_MS.

7. Showcases

DX-BallFollowed a sound call into its position-to-pan helper and rebuilt it as C. The reconstruction passes 3,205 original-x86 cases and reproduces all 63 compiled function bytes.
NotionTraced the Electron clipboard bridge from the renderer through preload and IPC into the main process and inspected the rich clipboard format.
TH04Recovered the fixed and aimed bullet-ring angle calculations of a 16-bit PC-98 game and compared the C++ with historical compiler output.

These examples show the range: a 16-bit DOS-era game, an old x86 Windows title and a modern Electron app, all through the same evidence-driven workflow.

The Electron trace, step by step

Renderer API Preload IPC channel Main process
REA’s JavaScript analysis maps these Electron boundaries and their evidence.

8. A sample investigation, end to end

Here is how a typical request unfolds when you ask an agent to understand a feature in an installed app. The exact tools vary by target, but the shape stays the same.

1 Surveywhat is it? 2 Locatefind the code 3 Tracefollow calls 4 Verifycheck evidence 5 Buildwrite and test
Verification can send the agent back to an earlier phase.
PhaseWhat the agent doesWhat you get
SurveyInspects the installation to identify runtime, components and supporting filesCandidates and suggested next probes
LocateSearches strings, symbols, modules or routes related to your featureA short list of relevant code locations
TraceFollows calls, imports, IPC or references from those locationsPseudocode, assembly or module relationships
VerifyChecks conclusions against evidence and notes limitsFindings with stated unknowns
BuildWrites an implementation for your project and tests itWorking code you can review

Tips for better questions

Name the target and the one behavior you care about. “How does search work in the Notes app?” gives the agent a clear starting point, while “explain this app” does not. Ask for the evidence explicitly, and ask what is still unknown. If the answer cites a code location, ask the agent to show it so you can check it yourself.

9. Troubleshooting and good habits

SymptomWhat to try
Something behaves oddly or errors outUpdate first with rea update or npx rea-agents@latest setup, restart the agent, retry
Agent does not see REARun setup again, approve the changes and restart the agent; or register the MCP server manually
Native analysis times out on a big binaryRaise REA_GHIDRA_STARTUP_TIMEOUT_MS or REA_HOPPER_STARTUP_TIMEOUT_MS
Hopper seems stuck on first run (macOS)Complete the demo or license prompt in the same user session, or open Hopper manually
Linux tools refuse to launchMake sure a procps-compatible ps is on the PATH
Node errors on installCheck your Node.js version against the supported ranges in section 3
New feature missingIt may be on the main branch but not yet in the latest npm release

Good habits

Keep REA current, because releases arrive often. Start with static analysis when you can, since it never runs the target. Treat runtime capture as running software with your own permissions. Save the evidence your agent cites, so you can reproduce a finding later. Remember that your agent’s model provider sees tool results, so avoid sensitive material you would not share with it.

10. Mini glossary

MCP (Model Context Protocol)

A standard way for AI agents to call external tools. REA is an MCP server, so any MCP-capable agent can use it.

Static analysis

Examining files without running them. Safe and repeatable, but it cannot show behavior that only appears at runtime.

Runtime capture

Running or interacting with a target and recording what happens, such as terminal output or filesystem changes.

Decompiler and pseudocode

A decompiler turns machine code into readable, C-like pseudocode. It is an approximation, which is why REA also exposes assembly.

Electron, preload and IPC

Electron apps combine a web-style renderer with a main process. Preload scripts bridge them, and IPC (inter-process communication) carries messages between the two.

ASAR

The archive format Electron apps commonly use to package their JavaScript and resources.

Evidence

The code, references and observations that back a conclusion, returned together with its limitations.

11. FAQ

Do I need Hopper, Ghidra or IDA?

Only for deep native analysis. Static JavaScript and .NET inspection need no native engine.

Does REA upload my app?

No. Analysis is local. Your agent sees the tool results, and its model provider applies its own data policy.

What code does REA return?

Native analysis returns pseudocode and assembly. JavaScript and Electron analysis recovers modules and their relationships. Your agent uses these to write and test an implementation.

What does the skill do?

It supplies investigation instructions to your agent. Setup installs it alongside the MCP registration.

I hit a bug. Now what?

Update first, since a recent release may fix it. If it persists, open an issue with your REA version, target type, reproduction steps and error output.

12. Responsible use and licensing

REA is intended for lawful research, education, interoperability, software preservation, and analysis of software you own or are authorized to examine. The project’s disclaimer covers all versions and channels.

REA’s own code is MIT licensed, and third-party material keeps its own licenses. Commercial tools such as IDA Pro, Hopper and JEB must be legally obtained and used under their licenses. REA grants no keys or activation, and cracked copies or bypassing license limits are not authorized.

Be careful with downloads. Only use the official sources: the GitHub repository, the project website and the rea-agents npm package. A similarly named repository does not make a download official.

13. Summary

QuestionAnswer
What is it?An MCP server and CLI for agent-driven reverse engineering
Installnpx rea-agents setup
Runs where?Locally on your machine
LicenseMIT
Best forUnderstanding how a feature works and rebuilding it with evidence