Seeing three disassemblers in a setup guide can make REA feel harder than it needs to be. The first decision is not which one to install. It is whether your question involves native code at all.
Start with the artifact
An extracted JavaScript or Electron application can often be inspected statically without a native analysis engine. An Android APK uses a different analysis route with its own prerequisites. A compiled native executable is where a configured engine such as Ghidra, Hopper or IDA becomes relevant.
This is a routing decision. Installing a native engine will not fix an editor that never connected to REA’s MCP server, and repairing MCP registration will not supply a missing native engine.
| Your target | A useful first route |
|---|---|
| Extracted JavaScript or Electron package | Static application analysis |
| Browser interaction | A scoped browser observation |
| Native executable | An available native provider |
| Android APK code | The Android package workflow and its prerequisites |
| Unknown desktop installation | Identify the package and relevant components first |
What a native engine contributes
For a native target, the engine can provide disassembly, pseudocode, references and related analysis. REA makes those capabilities available to the agent. The agent still has to connect the findings to your question.
Pseudocode is an interpretation. It may omit an input, obscure a type conversion or make a function look much simpler than the instructions show. The DX-Ball sound-pan case is a useful reminder to read callers and constants when that happens.
Compare the route on your machine
Use an engine you already have configured when it supports the target. Ghidra is an open-source project; Hopper and IDA have their own licensing and product options. Check their official sites for current terms rather than relying on a comparison table frozen in an old blog post.
For REA, host support and available operations vary by provider. An engine that can open one binary does not automatically support every architecture or runtime operation you might ask for.
Diagnose the narrow problem
A scoped readiness check helps you avoid treating an optional missing component as a reason to reinstall everything. The official diagnostic supports provider selection; choose the provider you actually intend to use.
npx -y rea-agents@latest doctor --provider ghidra --json
This checks that scope; it is not a proof that a particular binary will analyze successfully. Preserve the returned reason when a provider is unavailable.
Avoid turning the tool choice into the project
For your first native investigation, choose a small, bounded question: a numeric transformation, a format marker, a particular error condition. Record the target version or hash so later findings refer to the same bytes.
Ask for the function, its callers, relevant instructions and constants. If the output is too broad, narrow the query before increasing timeouts or output limits. More output can make an investigation harder to read without making its conclusion stronger.
If your immediate goal is simply to understand a local export feature, start with our JavaScript lab. You can learn how to follow evidence before choosing a decompiler.