Skip to content

MASTG-TECH-0114: Desofuscação de Símbolos

Para tornar alguns identificadores no programa únicos, o compilador processará seus nomes de símbolos. Esse processo é chamado de "name mangling" ou simplesmente "mangling". Frequentemente, os símbolos resultantes são difíceis de entender para humanos. Além disso, seu formato é específico para a linguagem de entrada, o compilador e pode até ser dependente da versão.

Você pode usar ferramentas de demangling para reverter o processo de mangling. Para Swift, há swift-demangle, e para nomes de funções em C++, há c++filt.md.

swift-demangle

Passe o símbolo com mangling para swift-demangle:

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

c++filt

Você pode fazer o demangling de símbolos C++ com c++filt:

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