在Python中去除导出函数

时间:2017-07-24 08:11:34

标签: python c++ dllimport name-mangling

我一直在尝试为一组PE文件转储所有导入的API函数调用。

我注意到大多数PE文件都有一组“怪异”的导入函数。这些都大大增加了我的独特函数调用次数,尽管我觉得它们很多都是相同的函数调用。

经过进一步研究,我发现这是由于名称错误而我正在寻找能够获得原始函数调用名称的解决方案(从某种意义上说它更具可读性,也许这可能会减少如果可能的话,而不是在C ++中, Python 中的我的多个函数调用。

我得到的一些例子:

?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

RegDeleteValueW
RegEnumKeyExW
RegCloseKey
RegQueryValueExW
RegSetValueExW

1 个答案:

答案 0 :(得分:2)

一般来说,解码C ++符号并不容易。有各种各样的风格"和其他复杂性。

一种选择是使用命令行工具。在Windows上,它是undname,在* nix上,您可以使用nmdemanglec++filt和其他实用程序。

另一个选择是尝试使用实现demangling的编译器代码。例如,LLVM内置Itanium ABI demangler。 GCC也应该有这样的东西。