6 个版本
0.2.3 | 2020年11月28日 |
---|---|
0.2.2 | 2020年4月28日 |
0.1.1 | 2020年4月10日 |
#935 在 开发工具
每月下载 63 次
30KB
361 行
名称混淆
目的
这个库提供了从任意字节流逆向来生成标识符(以下称为“混淆名称”)的功能,这些名称在 C 语言规则下是有效的,同时保持一定的人阅读性。
原因
mangling
的功能是从一个需要将 Java 符号(例如方法名称和签名)的标识符转换为生成汇编语言有效符号的编译器中提取出来的。虽然混淆过程可以将任何字节流编码为(更长的)ASCII 字符串,然后再将其转换回来,但它的目的不是提供通用的编码/解码设施。相反,它的目的是为编译器编写者提供一个简单、可靠的方式来生成人类可识别的标识符,而无需发明自己的混淆方案。
特性
方案
目前,只支持一种混淆方案,该方案在库文档中定义了固定的格式。混淆方案很简单,可能不是原创的,但没有证据表明它与任何其他系统共享,因此不提供互操作性保证。未来的修订版可能会更改 API 以允许一定程度的可配置性或替换编码方案。
要求
- 完备性(每个字节流都可以编码为唯一的混淆名称)
- 注入性(每个混淆名称都可以解码为唯一的字节流)
最低支持的 Rust 版本
最低支持的 Rust 版本是 1.42.0。
目标
- 正确性(实现符合其文档行为)
- 一致性(实现以可预测的方式运行)
- 可读性(混淆名称与输入流有明显的关联)
- 紧凑性(混淆名称的长度与输入相似)
- 性能(处理在时间和空间上都是计算高效的)
反馈
如果发现 mangling
无法满足其声明的需求,应通过 Github 报告,并欢迎提出 pull request。