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)に短縮され、分析後の関数リクエストは同等(16 ms 対 15 ms)で、子プロセスを含むサンプリングされたピークメモリは 1,022 MiB から 214 MiB に減少した。より大きな Go テストでは互換性の問題が露呈した。Java は要求された 3 つの関数をすべて返したが、Rust は重複したインポート名のため 1 つも返さず、C の例では Java の出力の方が読みやすかった(文字列と変数名 対 メモリアドレス)。著者は、バックエンドが異なる Ghidra エンジンバージョンと解析実装を使用していること、1 台の Mac とこれらのターゲットから得た結果は同等の解析品質を確立するものではないこと、Rust バックエンドは既存の ghidra-decompiler クレートを使用していること、開発およびベンチマークツールは 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]
