关于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);

猜你喜欢

转载自blog.csdn.net/roshy/article/details/82863656