是否可以从 DUMPBIN /SYMBOLS 命令派生声明的函数?
Is it possible to derive the declared function from DUMPBIN /SYMBOLS command?
您能否从以下命令的输出中导出函数声明 DUMPBIN /SYMBOLS 命令?我 运行 这个命令如下: DUMPBIN /SYMBOLS libinfinityhook.lib 并从转储中得到以下内容:
IfhInitialize@@YAJP6AXIPEAPEAX@Z@Z (long __cdecl IfhInitialize(void (__cdecl*)(unsigned int,void * *)))
以上输出的函数声明是什么?也许像下面这样:
NTSTATUS IfhInitialize(
_In_ INFINITYHOOKCALLBACK InfinityHookCallback);
假设以下类型定义:
typedef void (__fastcall * INFINITYHOOKCALLBACK)(_In_ unsigned int SystemCallIndex, _Inout_ void** SystemCallFunction);
Microsoft Visual Studio 附带了一个名为 undname.exe
的实用程序,它将大多数修饰的名称反转为 未修饰的 名称。
GNU Binutils 有 c++filt
,它将对 GCC 名称修改做同样的事情。
LLVM 具有 llvm-cxxfilt
符号名称 demangler,它与 GNU Binutils 兼容 c++filt
因为 LLVM 和 GCC 使用相同的名称修饰方案。
在相关说明中,Boost demangle
允许从 typeid
name()
中取消修饰符号名称。请记住 typeid
name()
不是由 C++ 标准规定的,而是特定于编译器的。所以它不便携,也不适合跨平台serialization/deserialization。唉。
您能否从以下命令的输出中导出函数声明 DUMPBIN /SYMBOLS 命令?我 运行 这个命令如下: DUMPBIN /SYMBOLS libinfinityhook.lib 并从转储中得到以下内容:
IfhInitialize@@YAJP6AXIPEAPEAX@Z@Z (long __cdecl IfhInitialize(void (__cdecl*)(unsigned int,void * *)))
以上输出的函数声明是什么?也许像下面这样:
NTSTATUS IfhInitialize(
_In_ INFINITYHOOKCALLBACK InfinityHookCallback);
假设以下类型定义:
typedef void (__fastcall * INFINITYHOOKCALLBACK)(_In_ unsigned int SystemCallIndex, _Inout_ void** SystemCallFunction);
Microsoft Visual Studio 附带了一个名为 undname.exe
的实用程序,它将大多数修饰的名称反转为 未修饰的 名称。
GNU Binutils 有 c++filt
,它将对 GCC 名称修改做同样的事情。
LLVM 具有 llvm-cxxfilt
符号名称 demangler,它与 GNU Binutils 兼容 c++filt
因为 LLVM 和 GCC 使用相同的名称修饰方案。
在相关说明中,Boost demangle
允许从 typeid
name()
中取消修饰符号名称。请记住 typeid
name()
不是由 C++ 标准规定的,而是特定于编译器的。所以它不便携,也不适合跨平台serialization/deserialization。唉。