#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 92903/week @ 2024-05-03 110863/week @ 2024-05-10 114229/week @ 2024-05-17 118212/week @ 2024-05-24 112171/week @ 2024-05-31 111980/week @ 2024-06-07 111580/week @ 2024-06-14 117849/week @ 2024-06-21 105821/week @ 2024-06-28 114673/week @ 2024-07-05 120367/week @ 2024-07-12 126778/week @ 2024-07-19 114908/week @ 2024-07-26 111066/week @ 2024-08-02 130713/week @ 2024-08-09 95881/week @ 2024-08-16

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

MIT 许可协议

605KB
15K SLoC

C++ 13K SLoC // 0.0% comments Rust 1.5K SLoC // 0.0% comments Python 96 SLoC // 0.0% comments

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