REA에서의 Java vs Rust Ghidra: 진행 중인 Rust 포트의 초기 벤치마크
/u/nanashili의 Reddit 게시물은 REA의 진행 중인 Rust 포트인 rea-rust의 초기 벤치마크를 제시하며, 작은 C 프로그램과 더 큰 Go 대상에서 TypeScript 버전의 Java Ghidra 백엔드와 네이티브 Rust Ghidra 백엔드를 비교한다.
이 사례에 대하여
저자는 M1 Pro Mac에서 7번의 새 세션에서 나온 중앙값 결과를 보고한다. 시작부터 첫 번째 디컴파일된 함수까지의 시간은 9.43초(TypeScript + Java Ghidra)에서 0.39초(네이티브 + Rust Ghidra)로 감소했고, 분석 후 함수 요청은 비슷했으며(16ms vs 15ms), 하위 프로세스를 포함한 샘플링된 최대 메모리는 1,022MiB에서 214MiB로 감소했다. 더 큰 Go 테스트에서는 호환성 문제가 드러났다. Java는 요청한 세 함수를 모두 반환했지만 Rust는 중복된 import 이름 때문에 아무것도 반환하지 못했고, C 예제에서 Java 출력이 더 읽기 쉬웠다(문자열과 변수 이름 vs 메모리 주소). 저자는 백엔드가 서로 다른 Ghidra 엔진 버전과 분석 구현을 사용하며, 한 대의 Mac과 이 대상들에서 나온 결과가 동등한 분석 품질을 입증하지는 않는다는 점, Rust 백엔드는 기존 ghidra-decompiler crate를 사용한다는 점, 개발 및 벤치마크 도구는 AI 지원을 받았다는 점을 언급한다. 전체 Ghidra 보고서, 스크립트, 원시 결과 및 한계가 참조되어 있지만, 테스트된 정확한 빌드를 재현하려면 여전히 원래 로컬 소스 스냅샷이 필요하다. 게시물은 다음으로 어떤 공개 바이너리와 분석 작업을 테스트할지 묻는 것으로 끝난다.
설정
설치 방법은 원본 출처를 확인하세요.
원문 / 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]
