REA - Reverse Engineer Anything - rea-agents-6.4.0

REA, short for Reverse Engineer Anything, is an open-source toolkit that helps AI coding agents investigate how software works, even when its original source code is unavailable. Hosted on GitHub, the project connects agents to analysis tools for native binaries, JavaScript applications, Electron apps, and other software.

Rather than attempting to recover an application's exact original source code, REA collects evidence from decompilers, disassemblers, strings, symbols, function references, and other analysis techniques. An AI agent can use that evidence to explain a feature, document an implementation, or build a compatible alternative for another project.

REA provides a command-line interface (CLI), a Model Context Protocol (MCP) server, and guided workflows for compatible AI coding tools. It is particularly useful for developers who need to understand undocumented behavior, investigate legacy software, or reproduce a feature without access to its implementation.

Features

AI-Assisted Reverse Engineering

REA is designed to let developers investigate software by describing what they want to understand in natural language.

For example, you could ask an AI agent to investigate how an application's offline search works, trace the relevant functions, explain the evidence, and implement similar functionality in your own project.

REA supplies the investigation tools and findings, while the AI agent performs the reasoning and writes the new implementation. This division makes it easier to investigate unfamiliar software without manually navigating every analysis tool.

The workflow generally follows three stages: decompile or inspect the target, trace the relevant behavior through the available evidence, and recreate the desired functionality in a separate implementation.

Native Binary Analysis

REA connects AI agents to tools that inspect compiled native applications. Depending on the configured analysis provider, developers can examine functions, strings, symbols, assembly instructions, pseudocode, references, and call relationships.

These capabilities help investigate how a binary implements a particular feature or interacts with other components.

For native analysis, REA supports integration with Hopper and Ghidra. The project also documents IDA-related support in its broader development direction, although provider availability and individual capabilities depend on the installed version and platform.

Hopper is a separate product with its own licensing requirements. Ghidra must be installed independently and configured before REA can use it.

Importantly, decompilation produces an approximation of the original program logic, not the original source code with all its comments, names, and design decisions intact.

JavaScript and Electron Application Inspection

REA can analyze JavaScript applications and Electron packages without executing the target application.

It can inspect application directories and ASAR archives to identify modules, imports, dependencies, and relationships between components. This is useful for understanding how a desktop application's frontend communicates with its underlying services.

For example, developers can investigate how an Electron application handles authentication, storage, updates, or networking by examining the available code and tracing the relevant modules.

Static analysis is especially convenient because it does not require a native decompiler for supported JavaScript targets. It also reduces the risks associated with running unfamiliar applications during an initial investigation.

Command-Line Interface

REA provides a CLI for running analysis tasks directly from a terminal or through automation scripts.

Install the command-line package globally with npm:

npm install --global rea-agents

Then start the guided setup:

rea setup

To check the environment and configured analysis tools:

rea doctor --json

For a JavaScript application or Electron package, you can run an analysis directly:

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

The JSON output makes it easier to process analysis results programmatically or pass structured findings to another tool.

Native binary analysis requires an appropriate provider to be installed and configured. The CLI therefore serves as a common entry point rather than replacing the underlying analysis engines.

MCP Integration for AI Coding Agents

One of REA's strongest features is its MCP server, which exposes analysis operations to compatible AI assistants.

The setup utility can configure supported clients, including Claude Code, Claude Desktop, Codex, Cursor, Gemini CLI, and Windsurf. Additional clients can connect through manual MCP configuration if they support local MCP servers.

After setup, an agent can call REA's tools to inspect a target, search for strings, examine functions, trace references, and collect evidence without requiring the user to execute each analysis command manually.

This integration is valuable for AI-assisted software development because it allows reverse engineering to become part of the same workflow used to modify and test code.

Guided Workflows and Evidence-Based Results

REA provides structured investigation workflows intended to guide an agent from an initial question toward a supported explanation.

Instead of returning only a conclusion, the tools can provide evidence and identify unresolved questions or limitations. Developers can then distinguish observed behavior from assumptions that require further testing.

The project also supports reusable analysis results and snapshots in relevant workflows, reducing the need to repeat expensive analysis operations unnecessarily.

This evidence-oriented approach is particularly useful when examining unfamiliar or poorly documented software, where an unsupported conclusion could lead to an incorrect implementation.

Local Analysis and Privacy

REA is designed to analyze target applications locally rather than uploading them to a hosted REA analysis service.

This is beneficial when investigating internal tools, proprietary software, or applications that cannot easily be shared with an external service.

However, the privacy boundary also depends on the AI agent and model provider being used. Analysis results returned to an agent may be sent to its configured model service, so developers should review that provider's data-handling policy before investigating confidential software.

Guided Installation and Diagnostics

REA includes a setup utility that configures the CLI, MCP server, and matching agent instructions. It can connect existing analysis tools and offer to install Hopper when needed.

The setup process presents proposed changes for review and approval and backs up existing agent configuration before applying changes.

Its diagnostic command checks dependencies, host compatibility, analysis tools, and agent configuration:

npx -y rea-agents@latest doctor

This helps developers identify missing dependencies or configuration problems before attempting a more involved investigation.

Performance and Compatibility

REA is distributed as a Node.js application and supports the command line and local MCP workflows. Its documented runtime requirements include Node.js 22.19 or newer in the 22.x line, Node.js 24.11 or newer in the 24.x line, or Node.js 26 and later.

Native analysis depends on the configured provider and supported host environment. The project documents support for macOS and selected Linux distributions, while Windows support varies by analysis provider and workflow.

Static JavaScript and Electron analysis has fewer dependencies because it does not require a native analysis engine. This makes it a convenient starting point for developers who want to try REA without installing a separate disassembler.

Actual analysis speed depends on the target application's size, the chosen provider, and the complexity of the behavior being investigated. Large native binaries may require more time and resources than a small JavaScript application.

REA is an analysis framework rather than a universal decompiler. Its capabilities depend on the tools available for the target platform, and the accuracy of conclusions depends on the evidence that can be recovered. It cannot guarantee recovery of original source code or perfectly reproduce every behavior of an application.

System Requirements

  • Runtime: Node.js 22.19 or newer in the 22.x line, 24.11 or newer in the 24.x line, or 26 and later.

  • Package manager: npm.

  • Operating systems: Supported macOS and Linux environments, with Windows support depending on the selected workflow and provider.

  • Native analysis: Hopper or Ghidra for the corresponding supported workflows.

  • AI integration: An MCP-compatible agent for interactive, agent-driven investigations.

  • JavaScript analysis: A local application directory or ASAR archive; no native decompiler is required for this workflow.

Ghidra integration has additional requirements, including a compatible Ghidra installation and Java Development Kit. Consult the current installation documentation for exact versions and platform-specific instructions.

Pros and Cons

Pros

  • Free and open-source under the MIT license.

  • Connects AI coding agents to reverse engineering tools through MCP.

  • Supports native binary investigation using decompilation and disassembly.

  • Analyzes JavaScript applications and Electron archives without executing them.

  • Provides CLI access for scripting and automation.

  • Collects evidence to support explanations of application behavior.

  • Offers structured workflows for investigating and recreating software features.

  • Designed for local analysis without a hosted REA analysis service.

  • Guided setup and diagnostic tools simplify configuration.

  • Can help developers understand legacy software and undocumented implementations.

Cons

  • Native analysis depends on external tools such as Hopper or Ghidra.

  • Some analysis providers have platform-specific limitations.

  • Decompilation cannot reliably recover the original source code.

  • Investigation quality depends on the available evidence and analysis engine.

  • Requires an AI agent for the full natural-language investigation workflow.

  • Additional setup may be necessary for native binaries.

  • Model-provider privacy policies still matter when sending analysis results to an AI service.

  • Reverse engineering complex applications can require substantial technical knowledge and time.

Download REA - Reverse Engineer Anything - rea-agents-6.4.0 - Software Mirrors

REA - Reverse Engineer Anything - rea-agents-6.4.0 Source Code

REA - Reverse Engineer Anything - rea-agents-6.4.0 Source code (zip)

REA - Reverse Engineer Anything - rea-agents-6.4.0 Source code (tar.gz)

REA - Reverse Engineer Anything - rea-agents-6.4.0 Release Notes:

6.4.0 (2026-10-11)

Highlights

  • Android: added device inspection, split-APK acquisition, logs, screenshots, file transfers and explicit app lifecycle actions through ADB, plus manifest and localized-string decoding with Apktool. (#1552, #1556) Thanks @3QL.
  • JEB: browse project units and decompile selected items through a caller-started local JEB MCP server. (#1536) Thanks @3QL.
  • Large analyses: discover retained Evidence without loading every payload, and inspect JavaScript graphs, binary layouts and function dossiers through summaries and selected views. (#1682, #1568, #1570, #1345, #1507, #1247) Thanks @jhuang-tw, @kaoru0822-kitauji, @N0zoM1z0.
  • JavaScript: isolate source analysis in an owned process with configurable heap and timeout limits; retain completed facts and explicit unknowns when analysis runs out of resources. (#1651, #1563, #1565) Thanks @N0zoM1z0, @peter-research.
  • Ghidra: configure import language/compiler specifications and seed functions, code and labels before auto-analysis. (#1667) Thanks @sqmagellan.
  • RPC discovery: recognize supported tRPC calls, HTTP-link URLs and named GraphQL operations in JavaScript applications and web bundles. (#1670) Thanks @pompiliodonatoapp.

Changes

  • Added Ghidra support for Windows PE DLLs and bounded MIPS ELF analysis, including carved MIPS inputs with incomplete section tables. Windows P0 remains read-only. (#1303, #1362, #1629, #1290, #718, #1619) Thanks @bqw371, @jaelliot, @kvalls, @N0zoM1z0.
  • Enabled set_address_name and set_addresses_names for Ghidra sessions with mutation authority, including namespace-aware data labels and per-address batch results. (#1635, #1634) Thanks @giri256.
  • Recovered additional signed AArch64 relative jump-table patterns. (#1592) Thanks @RishTheFish21.
  • Added PE resource inspection and read-only NativeAOT metadata parsing for supported x64 PE32+/.NET 8 RTR 9.1 inputs. The NativeAOT parser’s Windows-host Ghidra workflow remains unverified on a real Windows host. (#1482, 76d8f68, #1254) Thanks @N0zoM1z0, @thangldw.
  • Added Pi, Hermes and Qwen Code setup, including Hermes active-profile support. (#1376, #1403, #1415, #1409) Thanks @rasatpetabit, @yiliang114, @zaydiscold.
  • Added REA_MCP_INPUT_SCHEMA_PROFILE=compact for size-capped MCP clients such as Kimi/Moonshot, while retaining canonical runtime validation. (#1514, #1580, #1484, #1581) Thanks @haythemsellami, @N0zoM1z0.
  • Improved Codex onboarding and recovery from observed client, PATH and provider blockers. (#1613) Thanks @N0zoM1z0.
  • Reduced redirected JSON and terminal output size, and deferred heavy imports until their commands need them. (#1413, #1450, #1439, 21dbcf7) Thanks @kaoru0822-kitauji.

Fixes

  • Electron analysis: follow renamed and default-imported APIs and optional calls, ignore overwritten identities and media preload attributes, and resolve packaged app.asar pages and unpacked companions. (#1391, #1393, #1400, #1664, #1673) Thanks @kaoru0822-kitauji, @marnixpluim, @N0zoM1z0, @suninrain086.
  • JavaScript data flow: preserve returned/yielded reference uncertainty, invalidate property-stored aliases correctly, and retain bundled-module runtime scope. (#1437, #1445, #1471, #1577, #1428, #1442, #1449, #1576) Thanks @CassieFox23, @dakjdakd, @N0zoM1z0.
  • JavaScript packages: resolve exact exports subpaths, preserve trailing-slash directory requests and exact CommonJS keys, and respect shadowed require bindings. (#1424, #1615, 5485483, 8b2f851, f998fcb, 1e51c73, #1365) Thanks @akshitkhokhani, @AWUQAQ, @immanuwell, @rudycelekli.
  • Large JavaScript inputs: handle oversized inline source maps, deep returns and reassignment loops; avoid argument expansion limits and yield during large analysis passes. (#1386, #1368, #1390, #1539, #1525, #1542, #1545, #1557, #1380, #1401, #1538, #1462) Thanks @cold-atom, @KadirJeager, @kaoru0822-kitauji, @marnixpluim, @N0zoM1z0, @rudycelekli.
  • JavaScript receivers: expand escaped methods once, index returned-object targets, and avoid replaying earlier writes or duplicating retained graph allocations. (#1517, #1537, #1444, #1601, #1495) Thanks @CassieFox23, @geekwolf, @kaoru0822-kitauji, @N0zoM1z0, @zeynelacikgoez.
  • Browser captures: retain WebSocket URLs, empty connections and frame order; compare only common known payload coverage and preserve incomplete WebMCP replay coverage. (db4e360, aa257ea, e52c0a7)
  • Browser scenarios: seed storage in the correct partition, normalize loopback attach identities, retain declared-secret redaction and require verified lineage before Windows Electron signals. (#1604, #1590, #1588, 8b4c3de, #1497, #1591, #1589) Thanks @Adolanium, @akushonkamen, @dakjdakd.
  • Added Termux Android browser-scenario support. (#1655) Thanks @tyloryang.
  • Web inputs: accept BOM-prefixed HAR, preserve the first duplicate DOM attribute and resolve SVG/XLink URLs in HTML and XHTML. (#1509, #1516, #1602, #1683, #1496, #1586) Thanks @CassieFox23, @kaoru0822-kitauji, @sathariels, @taljeri.
  • Screenshot comparisons: validate PNG chunks, distinguish corruption from unsupported encodings and bound comparison memory. (4e4b15b, b3e977e) Thanks @rudycelekli.
  • Archives: preserve case-distinct names, report collisions at their diverging segment, detect nested formats from bytes and reject Windows alternate-stream extraction paths. (#1480, #1505, #1553, 573598c, #1470, #1491) Thanks @CassieFox23, @kaoru0822-kitauji.
  • Cleanup: retain failed readers, ASAR handles, output trees and provider workers for retry without discarding completed output or partial observations. (ffe0574, de0d341, 3f8c51e, d1235fa, 026126e)
  • Providers: canonicalize IDA workspace roots before identity checks, respect IDA cancellation, serialize JEB acquisition and correct Ghidra no-return/imported-symbol recovery. (#1481, #1419, 5f30ea6, f88c990, 49e6f00) Thanks @AS9929, @JonahSimon, @Y0UW1SH.
  • Binary metadata: respect PE/.NET section extents, bound binary-plist expansion, scope keyed-archive traversal and decode app Info.plist files without plutil. (#1678, #1515, #1378, #1476, 975dff2, 76296c5) Thanks @jayhemnani9910, @kaoru0822-kitauji, @rudycelekli.
  • Windows runtimes: preserve drive-root paths when creating private provider directories. (ee46323)
  • Compatibility: load Windows native controls under Node-API hosts with renamed executables, preserve dylib directory requirements, support Wakaru 1.x and reject directory-valued Hopper launchers. (#1531, #1623, #1540, #1426) Thanks @evenafterallisaid, @Fazmin, @pionxzh, @xeropresence.
  • Reference imports: normalize internal symlink lookup consistently, preserve exact paths and exclusion provenance, report root access failures and reject FIFO replacements without blocking. (#1535, 2ca3ad2, 6636045, 3967cfa, f1c58cc) Thanks @anujsingh-cse.
  • Setup: honor active configuration and skill roots, preserve configured MCP environments, validate Hermes/OMP profiles before writing, recognize Omarchy and retain recovery backups. (#1504, #1607, #1528, #1562, #1662, a011485, #1606, #1521, #1561) Thanks @Adkid-Zephyr, @CassieFox23, @LuisTaffelli, @N0zoM1z0, @peter-research.
  • Process capture: retain descendant lineage after launcher exit, preserve identity uncertainty before signaling and release terminals after observation failures. (80896a1, c916850) Thanks @Y0UW1SH.
  • CLI/MCP errors: accept JSON files for web comparisons, preserve native option help and union correction details, remove invalid aliases and validate doctor against its discovered output contract. (#1397, #1395, #1425, #1461, 8b4c96e, #1421, #1454) Thanks @Fazmin, @kaoru0822-kitauji, @N0zoM1z0.

⚠ BREAKING CHANGES

  • WebSocket results: use network.websocket_connections instead of network.websocket_events. Connections contain request_id, url and events; allow payload_bytes: null when size is unknown. No legacy alias remains. (db4e360)
  • Direct resource APIs: pass a caller-owned ArtifactResourceScope to inventory/extraction, JavaScript analysis, reference imports and web exports; retain it through cleanup/shutdown. For readJavaScriptArtifactFiles, scope is argument three and abort signal is argument four. Keep each root inventory source’s single cleanup owner. Use OwnedFileHandle owners, injected ASAR fd/read handles instead of createReadStream, VCS Result values, and WebScriptExportError’s options object. CLI/MCP inputs for the scoped operations are unchanged. (ffe0574, 53e7fad, 684199b, be75ed5, be6272f, e0e49e9, 95a77b6)
  • Saved reference graphs: exclusions require their matching pattern and distinguish project-ignored from default-ignored. Re-import graphs missing that provenance. (6585293)
  • Terminal captures: keep initial and resized buffers within 1,000,000 cells using columns × (rows + scrollback); oversized scenarios are rejected before launch. (f9ea9a9)
  • Optional agent-verification reports: accept schema version 4, nullable expectedFirstTool and targetClarificationPassed. Production CLI/MCP contracts are unchanged. (#1613)
  • Capture comparisons: recapture both sides with matching literal-replacements-v1 semantics when custom normalization patterns are used. Legacy unversioned pattern captures remain readable but cannot be compared with new pattern captures; captures without patterns are unaffected. (#1456, 2b6f14f) Thanks @Madhavan006, @N0zoM1z0.
  • Artifact graph edges: read child artifact IDs and paths from the occurrence selected by occurrence_id, not edge fields child_artifact_id/logical_path. Earlier inventory Evidence no longer validates against the new commitment. (#1493) Thanks @kaoru0822-kitauji.
  • Semantic graph schema: nodes and relations no longer include identifier_strategy, and relation IDs no longer hash it. Earlier Evidence no longer validates against this schema. (#1474) Thanks @kaoru0822-kitauji.
  • Semantic identities: select IDs from the parent graph; read exact event names from event_name, endpoints from endpoint and literal values from properties.value. New analyses use digest-based IDs for long/reserved event and endpoint names and value-sha256 literal role keys, with shorter labels; string literal labels now read string literal. Previously stored graphs retain their original IDs and remain valid workflow inputs. (#1427, #1423, #1407) Thanks @N0zoM1z0.

Contributors

  • Thanks also to @BaaRai, @commit-regrets, @coygeek, @Franky100-pig, @inii-sayaa, @jopemachine, @JosephDemarest, @keemsisi, @Totopo27 for contributions included in this release.
Full contribution record: 336 commits and 163 merged PRs.

How to Install

The recommended approach is to install REA through its guided setup utility.

First, ensure that a supported Node.js runtime and npm are installed. Then run:

npx rea-agents@latest setup

Choose the AI agents you want to configure, review the proposed changes, and approve them. Setup configures the MCP connection and installs the corresponding workflow instructions.

Restart the configured AI client after setup so it can load the new MCP server.

To use REA as a regular command-line application, install it globally:

npm install --global rea-agents

Then verify the installation:

rea doctor --json

For native binary analysis, configure Hopper or an existing Ghidra installation according to the official documentation. Static JavaScript and Electron analysis can be used without installing either tool.

To update an existing installation, follow the update instructions for the installation method you used. If you use the npx workflow, refresh the agent configuration with:

npx rea-agents@latest setup

Review the proposed changes and restart the relevant client when its MCP registration changes.

Final Verdict

REA is a compelling open-source toolkit for developers who want to combine reverse engineering with AI-assisted software development. Its biggest advantage is the way it connects analysis tools, structured evidence, and MCP-compatible agents into a single investigation workflow.

Support for native binaries, JavaScript applications, and Electron packages gives it a broad range of uses, from understanding undocumented features to investigating legacy software and building compatible implementations. The CLI and evidence-oriented results also make it useful beyond interactive AI sessions.

Its main limitation is that REA depends on external analysis engines for many native workflows, and its capabilities vary by operating system and provider. It also cannot recover original source code automatically or guarantee that an implementation recreated from analysis will behave identically to the original.

For developers working with unfamiliar applications, REA is worth exploring, particularly if they already use an MCP-compatible coding agent. It is best viewed as a bridge between reverse engineering tools and AI development workflows rather than a replacement for established disassemblers or the expertise required to interpret their results.

REA - Reverse Engineer Anything - rea-agents-6.4.0
Free
Software Informations:
Developer:

Operating System:
All Platforms
Date Added:
2026-10-11T12:03:40.154Z
Categories:

Post a Comment/Report Broken Link: