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