#demangle #language #symbols #symbolic #swift #compiler #name

symbolic-demangle

一个用于从各种语言和编译器中解混淆符号的库

115 个稳定版本 (11 个主要版本)

12.10.0 2024年7月24日
12.8.0 2023年12月1日
12.7.1 2023年11月29日
12.3.0 2023年7月19日
1.1.5 2017年12月2日

#30调试

Download history • Rust 包仓库 92903/week @ 2024-05-03 • Rust 包仓库 110863/week @ 2024-05-10 • Rust 包仓库 114229/week @ 2024-05-17 • Rust 包仓库 118212/week @ 2024-05-24 • Rust 包仓库 112171/week @ 2024-05-31 • Rust 包仓库 111980/week @ 2024-06-07 • Rust 包仓库 111580/week @ 2024-06-14 • Rust 包仓库 117849/week @ 2024-06-21 • Rust 包仓库 105821/week @ 2024-06-28 • Rust 包仓库 114673/week @ 2024-07-05 • Rust 包仓库 120367/week @ 2024-07-12 • Rust 包仓库 126778/week @ 2024-07-19 • Rust 包仓库 114908/week @ 2024-07-26 • Rust 包仓库 111066/week @ 2024-08-02 • Rust 包仓库 130713/week @ 2024-08-09 • Rust 包仓库 95881/week @ 2024-08-16 • Rust 包仓库

每月473,645次下载
209 个代码包 中使用(12个直接使用)

MIT 许可协议

605KB
15K SLoC

C++ 13K SLoC // 0.0% comments • Rust 包仓库 Rust 1.5K SLoC // 0.0% comments • Rust 包仓库 Python 96 SLoC // 0.0% comments • Rust 包仓库

Build Status

symbolic-demangle

支持各种语言和编译器的解混淆。

目前支持的语言有

  • C++(GCC样式编译器和MSVC)
  • Rust(旧版和v0版本)
  • Swift(至Swift 5.2)
  • ObjC(仅符号检测)

由于不同语言的解混淆方案不同,支持的解混淆功能不一致。例如,在旧版Rust的混淆中,参数类型未被编码,因此在解混淆名称中不可用。

此模块是 symbolic 代码包的一部分,可以通过 demangle 功能启用。

示例

use symbolic::common::{Language, Name};
use symbolic::demangle::{Demangle, DemangleOptions};

let name = Name::new("__ZN3std2io4Read11read_to_end17hb85a0f6802e14499E");
assert_eq!(name.detect_language(), Language::Rust);
assert_eq!(name.try_demangle(DemangleOptions::default()), "std::io::Read::read_to_end");

许可证:MIT

依赖项

~360–600KB
~11K SLoC