1、引言ide
不少时候,咱们写了一个Dll,不但愿别人经过DLL查看工具,看到咱们的导出函数名称。能够经过如下步骤实现:函数
1. 在def函数中作以下定义:工具
LIBRARY EXPORTS HideFuncName @1 NONAME
经过添加NONAME关键字,隐藏函数名,这样的话,用Dependency Walker来查看该Dll,只能看到以下结果:spa
2. 如何调用该Dll中的函数,经过ID的方式调用,代码以下:code
1 typedef void (WINAPI *FPHideFuncName)(); 2 DWORD dwErrCode = 0; 3 wstring str = CProcHelper::GetCurrentProcessPath(); 4 str += L"\\Tool\\resconfig.dll"; 5 HMODULE hModule = LoadLibrary(str.c_str()); 6 if (NULL != hModule) 7 { 8 FPHideFuncName fp = (FPHideFuncName)GetProcAddress(hModule, (char*)1); // 经过ID获取函数地址 9 //FPHideFuncName fp = (FPHideFuncName)GetProcAddress(hModule, "HideFuncName"); 10 if (NULL != fp) 11 { 12 fp(); 13 } 14 dwErrCode = GetLastError(); 15 }
2、小结:blog
1. 只适合于内部使用的DLL;string
2. 经过函数名导出,还能减少DLL的大小;ast