编译后的 Rust 和 C++ 符号名称是经过"混淆"(mangled)处理的——被编码成一种紧凑的 ASCII 形式,其中打包了命名空间、泛型参数和函数签名。_ZN4core3fmt5Write9write_fmt17h... 并非给人直接阅读的,但其中蕴含的信息很重要:属于哪个 crate、哪个模块、哪个函数。WASM 反混淆解码器在浏览器中完全本地地把这些信息解开。
两种使用方式:
- 单个符号 — 粘贴一个混淆后的名称,随着输入即时看到解码结果。支持 Itanium C++(
_Z…)、Rust 基于 Itanium 的旧式混淆(_ZN…17h[哈希]),以及 Rust 较新的 v0 方案(_R…)。 - 批量扫描 — 上传一个
.wasm文件,工具会从模块的调试用 "name" 段中提取所有函数名,加上所有导出名称,然后一次性全部解码,生成一张可搜索的表格,可复制或导出为 CSV。
关于诚实性说一句,因为这里很重要:Itanium C++ 反混淆覆盖了 ABI 的常见子集(嵌套名称、模板、替换、运算符),并已针对真实符号与 c++filt 进行过核对。Rust 的旧式方案建立在 Itanium 之上,同样可靠。Rust 的 v0 方案要复杂得多——本工具尽力重建路径(crate、模块、函数名),但不会重建完整的泛型参数列表或 impl/trait 结构,反向引用和 punycode 编码的标识符也不会被解码。任何涉及这种简化的 v0 结果都会标记为"部分",并附带说明具体缺失了什么——绝不会当作完整解码来呈现。不匹配任何已知混淆方案的符号会原样显示,清楚标记为未识别,而不是被悄悄丢弃。
适用于审计第三方 .wasm 模块、理解崩溃堆栈跟踪,或单纯探究一个编译后的 Rust 或 C++ 二进制文件里究竟包含什么。
Tiny Online Tools







