是否可以从DUMPBIN/SYMBOLS命令派生声明的函数



您能从以下命令DUMPBIN/SYMBOLS的输出中导出函数声明吗?我按如下方式运行此命令:DUMPBIN/SYMBOLS libinfinityhook.lib并从转储中获得以下内容:

IfhInitialize@@YAJP6AXIPEAPEAX@Z@Z (long __cdecl IfhInitialize(void (__cdecl*)(unsigned int,void * *)))

上面输出的函数声明是什么?也许是以下内容:

NTSTATUS IfhInitialize(
_In_ INFINITYHOOKCALLBACK InfinityHookCallback);

假设以下类型def:

typedef void (__fastcall * INFINITYHOOKCALLBACK)(_In_ unsigned int SystemCallIndex, _Inout_ void** SystemCallFunction);

Microsoft Visual Studio附带了一个名为undname.exe的实用程序,它将把大多数修饰的名称反转为未修饰的名称。

GNU Binutils有c++filt,它将对GCC名称篡改执行同样的操作。

LLVM具有llvm-cxxfilt符号名称去映射器,它与GNU Binutilsc++filt兼容,因为LLVM和GCC使用相同的名称篡改方案。

与此相关的是,在处理过程中,Boostdemangle允许从typeidname()中取消装饰符号名称。请记住,typeidname()不是由C++标准规定的,而是编译器特定的。因此它不可移植,不适合跨平台序列化/反序列化。唉。

最新更新