DC娱乐网

一个Rust的反编译器及配套论文地址:github.com/sefcom/oxi

一个Rust的反编译器及配套论文地址:github.com/sefcom/oxidizer

“逆向工程任务通常依赖反编译器从这些二进制文件中恢复源代码。然而,分析人员发现,使用现代 C 反编译器分析 Rust 二进制文件非常困难。现代 C 反编译器在处理 Rust 二进制文件时效果不佳,是因为它们无法从底层实现中恢复出高层 Rust 抽象。因此,反编译输出通常冗长且不准确。基于此,我们认为,要实现高质量的 Rust 反编译,反编译器必须弥合高层 Rust 抽象与底层实现之间的差距。

在本文中,我们研究了 C 反编译器在反编译 Rust 二进制文件时为什么会失败。我们识别出一份较完整的反编译失败类型列表,分析这些失败的原因,并开发了一种新的反编译器 OXIDIZER,用于将 Rust 二进制文件反编译为 Rust 伪代码。我们在 28 个流行 Rust 项目上对 OXIDIZER 进行了评估,覆盖多个优化级别和编译器版本,并将其与 angr、Hex-Rays、Ghidra 和 Binary Ninja 进行对比。OXIDIZER 在大多数简洁性和保真度指标上都优于所有基线工具,并且是唯一能够恢复 Rust enum 和 macro 的工具。一项人工研究进一步表明,使用 OXIDIZER 的参与者比使用 Hex-Rays 的参与者准确率高 28%,完成任务速度快 20%。”