Eid*_*nMK 5 c++ python dllimport name-mangling
我一直在尝试转储一组PE文件的所有导入的API函数调用。
我注意到大多数PE文件都有一组看起来很“奇怪”的导入功能。这些使我独特的函数调用数量大大增加,即使我觉得其中很多都是相同的函数调用。
经过进一步的研究,我发现这是由于名称处理所致,并且我目前正在寻找一种能够获取原始函数调用名称的解决方案(从某种意义上说,它更具可读性,也许可以减少我的数量)。唯一的函数调用)(如果可能),请使用Python而不是C ++。
我得到的一些例子:
?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ
?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PAD_J@Z
??0exception@@QAE@ABQBD@Z
??0exception@@QAE@ABQBDH@Z
??0exception@@QAE@ABV0@@Z
??1exception@@UAE@XZ
Run Code Online (Sandbox Code Playgroud)
与
RegDeleteValueW
RegEnumKeyExW
RegCloseKey
RegQueryValueExW
RegSetValueExW
Run Code Online (Sandbox Code Playgroud)
一般来说,分解 C++ 符号并不容易。有各种“风格”和其他复杂性。
一种选择是使用命令行工具。在 Windows 上它是undname,在 *nix 上您可以使用nm、demangle和c++filt其他实用程序。
另一种选择是尝试使用实现分解的编译器代码。例如,LLVM 具有内置的Itanium ABI demangler。GCC 也应该有类似的东西。