mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dev Toolsevaluationupdated 26 Aug 2026

radare2 review

radare2 is a command-line reverse-engineering framework for inspecting, debugging, disassembling, emulating, and modifying binaries. It gives security researchers a Unix-like set of small tools, libraries, plugins, and a scriptable interactive shell instead of centering the job on one graphical application.

+44stars / 7d
Verdict

Our radare2 npm install ran for 415 seconds before a wasm-pack download timed out, so that packaging route is a poor first choice on restricted networks. The native tool remains one of the deepest options for reverse engineers who think in commands and scripts, with current releases and a huge format surface. Choose Ghidra or Cutter for a gentler visual workflow; choose radare2 when terminal control, automation, and embeddable libraries justify its learning curve.

We ran it

Lab card: what happened when we ran radare2Screenshot of radare2 (www.radare.org)
Install✗ · 415s
Build
Repo4829 files~1,061,011 lines of source · 72.5 MB · 7 CI workflows · tests dir

Answers from our run

Does radare2 build from source?

The dependency install failed, and the project has no separate build step. We cloned commit e9debda into a clean Debian container with 3 CPUs and no project-specific setup.

Who should not use radare2?

Beginners expecting a guided graphical decompiler: the README teaches terse commands such as aaa, afl, and pdf, while the official Qt interface is a separate plugin.

What are the alternatives to radare2?

Ghidra, Rizin, Cutter. Our radare2 npm install ran for 415 seconds before a wasm-pack download timed out, so that packaging route is a poor first choice on restricted networks.

Setup2/5Native paths are documented; measured npm install timed out
Docs4/5Strong book and references, but the command language is demanding
Community5/5Same-day pushes, current releases, and active technical reports
Maturity5/5Long-lived framework with broad formats, platforms, and plugins

Discussed on

  1. hnCutter – A Qt and C++ GUI for Radare2 reverse engineering framework336 points
  2. hnGhidra decompiler plugin for radare2 and Cutter6 points
  3. hnCutter: Qt and C++ GUI for radare2 reverse engineering framework5 points
  4. hnCutter – A Qt and C++ GUI for radare2 reverse engineering framework4 points
  5. hnCutter (Radare2 GUI) First Release4 points

Who it’s for

Reverse engineers who prefer keyboard-driven analysis and commands that can be scripted.
Security researchers working across many executable formats, processors, and operating systems.
Tool builders who want C libraries, r2pipe bindings, or plugins beneath a custom workflow.
Forensics practitioners who need a hex editor, binary metadata tools, debugging, and analysis in one install.

Who it’s NOT for

Beginners expecting a guided graphical decompiler: the README teaches terse commands such as aaa, afl, and pdf, while the official Qt interface is a separate plugin.
npm consumers behind unreliable or tightly restricted egress: our install attempted to download a fixed wasm-pack archive from GitHub and ended on a 415-second timeout.
Plugin maintainers who cannot track API movement: release 6.2.0 reports an ABI difference of 22 and the README warns that individual plugins can carry different licenses.
Teams that must parse hostile files only inside memory-safe code: radare2 is primarily C, and release 6.2.0 lists fixes for out-of-bounds reads and writes, use-after-free, overflows, and malformed-file crashes.
ARM users depending on ragg2 today without testing their exact mode: issue 25590 shows generated ARM assembly failing in 16-bit, 32-bit, and 64-bit cases.

Setup reality

Our npm-path run at commit e9debda failed during installation after 415 seconds. npm reached wasm-pack's install script, tried to fetch wasm-pack 0.10.3 from GitHub, and timed out connecting to port 443. Since install never finished, we did not build or run tests.

That path lives under ./dist/npm/; it is not the README's recommended native installation. The project directs most users to release binaries or a source checkout followed by sys/install.sh, with make or Meson builds. Windows needs Meson plus MSVC or MinGW.

The checkout contained 4,829 files, roughly 1,061,011 source lines, and used 72.5 MB. Plugins installed through r2pm bring their own dependencies and licenses. Debugging a process can also require platform permissions that simple read-only file analysis does not.

radare2 is a command language for binary analysis

The 72.5 MB checkout contains a framework rather than a single disassembler. The r2 shell opens binaries, seeks to addresses or symbols, runs analysis, shows graphs, patches bytes, and connects to debuggers. Companion tools handle assembly, binary metadata, searching, and conversion. Libraries underneath those commands can be embedded, while r2pipe lets scripts drive a session from other languages. This structure rewards people who already organize work as repeatable commands.

The first session can feel hostile. The README opens /bin/ls, runs aaa, lists functions with afl, prints disassembly with pdf, and uses semicolons and tilde filters inside a compact shell grammar. Those commands become quick with practice, yet their names reveal little to a newcomer. The official book is closer to required reading than optional background. Our repository snapshot had 4,829 files and about 1,061,011 source lines, so guessing through the interface is an expensive way to learn.

Format and architecture coverage is the main reason to choose it

The README lists common desktop binaries such as ELF, Mach-O, and PE beside firmware, mobile, game-console, kernel-cache, bytecode, core-dump, and filesystem formats. Processor support ranges across current x86, ARM, RISC-V, and WebAssembly targets plus older and unusual chips. This breadth matters when an investigation moves beyond one compiler and operating system. A familiar command set can follow the analyst across very different artifacts.

Coverage is uneven by nature. Release 6.2.0 includes many corrections for PowerPC, MIPS, ARM, Mach-O, PE, DEX, PEF, QNX, and other parsers. Issue 26552 describes RELR relocation types being selected incorrectly for architectures outside the handled cases. Issue 25590 shows ragg2 generating ARM code that fails to assemble across 16-bit, 32-bit, and 64-bit modes. Verify the processor, loader, debugger, and command combination that your job depends on.

What happened when we ran it

We cloned commit e9debda into an unprivileged Node 22 container with 3 CPUs, 8 GB of RAM, and no secrets. The checkout occupied 72.5 MB and held 4,829 files with roughly 1,061,011 source lines. Our harness targeted the npm project under ./dist/npm/, not the native C installation recommended near the top of the README. The repository had 7 CI workflow files, a tests directory, and no root Dockerfile.

The npm installation failed after 415 seconds with exit code 1. Its final lines show several dependency deprecation warnings, then wasm-pack running node ./install.js. That script attempted to download wasm-pack-v0.10.3-x86_64-unknown-linux-musl.tar.gz from a GitHub release and ended with connect ETIMEDOUT to port 443. The log proves a network timeout during that download; it does not prove the archive was missing or the native project could not compile.

Installation never completed, so we did not run a build or tests. There is no honest pass count to report. Teams adopting the npm package should test installation from the same network and cache the required artifacts if policy allows. Most reverse engineers should begin with a published native binary or follow the source build in the README instead of treating this JavaScript distribution folder as the default product.

Native installation has several supported routes

The README recommends cloning the repository and running sys/install.sh, which uses the project's build scripts and creates links for the command suite. Make and Meson builds are supported, along with Nix packaging and released binaries. Windows uses batch files to prepare Python, Meson, and Ninja before building with MSVC or MinGW. These options are useful, but they also mean troubleshooting depends heavily on the chosen platform and compiler.

Plugin setup is another layer. r2pm can install graphical interfaces, decompilers, Frida integration, binary diffing, YARA support, language-specific analyzers, and other extensions. Release 6.2.0 records 503 commits from 25 contributors and an ABI difference of 22. That is active engineering, but native plugin authors should expect to rebuild, inspect API changes, and check each plugin's license rather than assuming one framework license covers everything.

Hostile files deserve process isolation

A reverse-engineering tool routinely reads malformed or adversarial data. radare2 is primarily written in C, and the 6.2.0 notes include a long crash section: bounds errors, use-after-free, stack exhaustion, integer problems, malformed parser inputs, and authentication fixes all appear there. The fixes are evidence of active hardening. They are also a reminder that opening an unknown file gives complex native parsers attacker-controlled bytes.

Use an unprivileged account or disposable environment for suspicious samples, keep the tool current, and separate file inspection from debugger attachment to sensitive processes. The repository has 7 CI workflow files and a dedicated test directory, though our npm-path failure meant we did not exercise either. Release notes are detailed enough to search for affected loaders and architectures before processing a high-risk sample.

Active development comes with a large issue queue

GitHub recorded a push on August 26, 2026. Release 6.2.0 arrived on August 7, and the README says the master branch identifies itself as 6.2.1 while work moves toward 6.2.2. The open count was 822 issues and pull requests combined. Same-day architecture reports and maintenance proposals show active scrutiny, so the queue reads as ongoing work rather than abandonment.

radare2 makes the most sense when its shell becomes part of the analyst's method. Saved commands, scripts, r2pipe automation, and plugins can turn a manual investigation into a repeatable procedure. Analysts who mainly want a graphical decompiler will get productive faster in Ghidra or Cutter. For terminal-native reverse engineering across odd targets, radare2 remains difficult to replace, provided the team pins versions and tests the exact analysis path it relies on.

Alternatives

ProjectWhat it isPick it when
Ghidra gh↗A desktop reverse-engineering suite with a graphical workflow and an integrated decompiler.pick this instead when a GUI, decompiler-first analysis, and shared project model matter more than shell scripting.
RizinA fork-derived reverse-engineering framework with its own command line, libraries, and plugin ecosystem.pick this instead when Rizin's APIs, release choices, or Cutter integration fit your workflow better.
CutterA graphical reverse-engineering platform built around Rizin with decompiler integrations.pick this instead when analysts want a desktop interface while retaining an open analysis backend.

What people are saying

  1. [velocity-scout] radareorg/radare2

Sources

  1. radare2 repository and README
  2. radare2 6.2.0 release
  3. Issue 26552 on RELR relocation types
  4. Issue 25590 on ARM assembly
  5. The Official radare2 Book

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →