1. 程式人生 > >關於DLL的載入/入口函式及DLL注入

關於DLL的載入/入口函式及DLL注入

在顯示呼叫一個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);