Unmangle C++ DLL函数名称

133*_*337 0 c

我有一个导出3功能的DLL:

.h文件

extern "C"
{
__declspec(dllexport) BOOLEAN __stdcall InitializeChangeNotify(void);
__declspec(dllexport) BOOLEAN __stdcall PasswordFilter(LPCWSTR AccountName,LPCWSTR FullName,LPCWSTR Password,BOOLEAN SetOperation);
__declspec(dllexport) NTSTATUS __stdcall PasswordChangeNotify(LPCWSTR UserName,ULONG RelativeId,LPCWSTR NewPassword);
}
Run Code Online (Sandbox Code Playgroud)

.c文件

extern "C"
{
    __declspec(dllexport) BOOLEAN __stdcall InitializeChangeNotify(void)
{
    writeToLog("InitializeChangeNotify()");
    return TRUE;
}

__declspec(dllexport) BOOLEAN __stdcall PasswordFilter(LPCWSTR AccountName,LPCWSTR FullName,LPCWSTR Password,BOOLEAN SetOperation)
{
    writeToLog("PasswordFilter()");
    return TRUE;
}

__declspec(dllexport) NTSTATUS __stdcall PasswordChangeNotify(LPCWSTR UserName,ULONG RelativeId,LPCWSTR NewPassword)
{
    writeToLog("PasswordChangeNotify()");
    return 0;
}
}
Run Code Online (Sandbox Code Playgroud)

我在VS 2010中编译.

我看到函数名称取决于:_InitializeChangeNotify@0, _PasswordChangeNotify@12.如何取消功能?

dpp*_*dpp 5

undname.exe在Windows上看起来就像是c++filt等同的.

我把它"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\undname.exe"放在我的电脑里.

从页面,

您可以使用undname.exe将装饰名称转换为其未修饰的表单.例如,

C:\>undname ?func1@a@@AAEXH@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation 1981-2000. All rights reserved.Undecoration
of :- "?func1@a@@AAEXH@Z"
is :- "private: void __thiscall a::func1(int)"
Run Code Online (Sandbox Code Playgroud)