關於DLL的載入/入口函式及DLL注入
阿新 • • 發佈:2018-11-22
在顯示呼叫一個DLL時:
HINSTANCE hAddDll = NULL;
hAddDll = ::LoadLibrary(_T("xxx.dll"));//載入dll
這個時候會觸發呼叫DLL的入口函式:
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
在新的vs 2017中對DLL的框架進行了封裝,入口呼叫函式為:
BOOL CXxxApp::InitInstance()
{
CWinApp::InitInstance();
}
如果想在DLL載入時實現DLL的注入,可以在這兩個入口函式中設定全域性鉤子
hhk = ::SetWindowsHookEx(WH_MOUSE, MouseProc, hinst, 0);