REA MCP
☰
EN
● — online · Views — times
SponsorsSubmit a case
Reddit posts · by nanashili

Java vs Rust Ghidra in REA: early benchmarks from a work-in-progress Rust port

A Reddit post by /u/nanashili presenting early benchmarks of rea-rust, a work-in-progress Rust port of REA, comparing the TypeScript version's Java Ghidra backend against a native Rust Ghidra backend on a small C program and a larger Go target.

Translated

About this case

The author reports median results from seven fresh sessions on an M1 Pro Mac: startup to first decompiled function dropped from 9.43 s (TypeScript + Java Ghidra) to 0.39 s (native + Rust Ghidra), post-analysis function requests were comparable (16 ms vs 15 ms), and sampled peak memory including child processes fell from 1,022 MiB to 214 MiB. The larger Go test exposed a compatibility problem: Java returned all three requested functions while Rust returned none due to a duplicate import name, and Java output was more readable in the C example (strings and variable names vs memory addresses). The author notes the backends use different Ghidra engine versions and analysis implementations, that results from one Mac and these targets do not establish equivalent analysis quality, that the Rust backend uses the existing ghidra-decompiler crate, and that development and benchmark tooling were AI-assisted. A full Ghidra report, scripts, raw results and limitations are referenced, but reproducing the exact tested builds still requires the original local source snapshots. The post ends by asking which public binaries and analysis tasks to test next.

Setup

See the original source for installation instructions.

Original text / README

I’m working on rea-rust , a Rust port of REA , a local reverse-engineering tool. This is still a work in progress. Compatibility, analysis coverage and output readability are active areas of development. These benchmarks show what worked and where the tested build still needed improvement. I compared the TypeScript version’s Java Ghidra backend with the native version’s Rust Ghidra backend. For a small C program , these were the median results from seven fresh sessions on an M1 Pro Mac: What I measured TypeScript + Java Ghidra Native + Rust Ghidra Start the tool and get the first decompiled function 9.43 seconds 0.39 seconds Request a function after analysis is ready 16 milliseconds 15 milliseconds Sampled peak memory, including child processes 1,022 MiB 214 MiB The biggest improvement was startup. Once analysis was ready, the first decompilation request took about the same time. The larger Go test exposed a compatibility problem. Java returned all three requested functions. Rust returned none because of a duplicate import name. That failure is included in the report. Java also produced more readable output in the C example, showing strings and variable names where Rust sometimes showed memory addresses. These gaps are part of the ongoing work. The backends use different Ghidra engine versions and analysis implementations. Results from one Mac and these targets don’t establish equivalent analysis quality or general performance. The Rust backend uses the existing ghidra-decompiler crate. Development and benchmark tooling were AI-assisted. Full Ghidra report, scripts, raw results and limitations . Reproducing the exact tested builds still requires the original local source snapshots. Which public binaries and analysis tasks would you suggest testing next? submitted by /u/nanashili to r/LovingOpenSourceAI [link] [comments]

Similar projects