跳过内容

MASTG-TECH-0114: 解混淆符号

为了使程序中的某些标识符具有唯一性,编译器会处理它们的符号名称。这个过程被称为“名称混淆”或简称为“混淆”。通常,生成的符号对于人类来说很难理解。此外,它们的格式特定于输入语言、编译器,甚至可能依赖于版本。

您可以使用反混淆工具来还原混淆过程。对于 Swift,有 swift-demangle;对于 C++ 函数名称,有 c++filt.md。

swift-demangle

将混淆的符号传递给 swift-demangle

$ xcrun swift-demangle __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfcTO
_T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfcTO ---> @nonobjc __C.WKWebView.init(frame: __C_Synthesized.CGRect, configuration: __C.WKWebViewConfiguration) -> __C.WKWebView

c++filt

您可以使用 c++filt反混淆 C++ 符号。

c++filt _ZSt6vectorIiSaIiEE
std::vector<int, std::allocator<int>>