吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 216|回复: 0
上一主题 下一主题
收起左侧

[Disassemblers] Oxidizer —— 基于 angr 的 Rust 反编译器

[复制链接]
跳转到指定楼层
楼主
EternalBlue 发表于 2026-5-22 22:31 回帖奖励
https://github.com/sefcom/oxidizer

Oxidizer:迈向简洁且高保真的 Rust 反编译

Oxidizer 是一个基于 angr 构建的 Rust 反编译器,能够从已剥离符号的 Rust 二进制文件中生成简洁且高保真的 Rust 伪代码。与现有的面向 C 语言的反编译器不同,Oxidizer 专为处理 Rust 独特的编译模式而设计,并可恢复高级 Rust 抽象,例如枚举、模式匹配、错误传播(? 运算符)以及宏(println!format!panic! 等)。该项目由亚利桑那州立大学 SEFCOM 提供。

我们已将 Oxidizer 合并到 angr 的主分支中。

概述

现代 C 语言反编译器(如 Hex-Rays、Ghidra、Binary Ninja、angr)在反编译 Rust 二进制文件时会产生冗长且不准确的输出,因为它们无法从底层实现中恢复高级 Rust 抽象。Oxidizer 通过实现一套专用于 Rust 的反编译流水线来解决这一问题:

  1. 二进制级分析 — 通过基于 FLIRT 的函数匹配率分析识别 Rust 编译器版本,恢复标准库函数,并加载版本相关的结构体/枚举/函数类型数据库(支持 Rust 1.39.0–1.93.0)。

  2. fCFG(函数控制流图)简化(无类型) — 移除由 Rust 自动资源管理(drop_in_place__rust_dealloc)和编译器插入的安全检查(越界检查等)产生的额外代码。

  3. Rust 类型推断 — 执行跨过程的函数原型推断,以恢复结构体/枚举返回类型以及包含 Option<T>Result<T, E> 的参数类型,并通过扩展了枚举类型支持的基于约束的类型推断算法(Retypd)进行增强。

  4. fCFG 简化(带类型) — 恢复结构体和枚举的初始化,概括常见宏(println!format!write!panic! 等),简化解引用强制转换等。

  5. 结构化 — 将简化后的 fCFG 转换为高级 Rust 控制流结构,包括 match/if let 模式匹配以及 ? 错误传播。

  6. Rust 伪代码生成 — 输出结构化、可读性强的 Rust 伪代码。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-23 08:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表