#byte-stream #identifier #safe #generate #scheme #assembly #name-mangling

名称混淆

名称混淆从字节流生成安全的、可识别的标识符

6 个版本

0.2.3 2020年11月28日
0.2.2 2020年4月28日
0.1.1 2020年4月10日

#935开发工具

Download history 1/week @ 2024-03-10 27/week @ 2024-03-31 1/week @ 2024-04-07

每月下载 63

MIT 许可证

30KB
361

名称混淆

crates.io Rust codecov Docs.rs rustc 1.42+

目的

这个库提供了从任意字节流逆向来生成标识符(以下称为“混淆名称”)的功能,这些名称在 C 语言规则下是有效的,同时保持一定的人阅读性。

原因

mangling 的功能是从一个需要将 Java 符号(例如方法名称和签名)的标识符转换为生成汇编语言有效符号的编译器中提取出来的。虽然混淆过程可以将任何字节流编码为(更长的)ASCII 字符串,然后再将其转换回来,但它的目的不是提供通用的编码/解码设施。相反,它的目的是为编译器编写者提供一个简单、可靠的方式来生成人类可识别的标识符,而无需发明自己的混淆方案。

特性

方案

目前,只支持一种混淆方案,该方案在库文档中定义了固定的格式。混淆方案很简单,可能不是原创的,但没有证据表明它与任何其他系统共享,因此不提供互操作性保证。未来的修订版可能会更改 API 以允许一定程度的可配置性或替换编码方案。

要求

  1. 完备性(每个字节流都可以编码为唯一的混淆名称)
  2. 注入性(每个混淆名称都可以解码为唯一的字节流)

最低支持的 Rust 版本

最低支持的 Rust 版本是 1.42.0。

目标

  1. 正确性(实现符合其文档行为)
  2. 一致性(实现以可预测的方式运行)
  3. 可读性(混淆名称与输入流有明显的关联)
  4. 紧凑性(混淆名称的长度与输入相似)
  5. 性能(处理在时间和空间上都是计算高效的)

反馈

如果发现 mangling 无法满足其声明的需求,应通过 Github 报告,并欢迎提出 pull request。

无运行时依赖