BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
MessageBox(NULL, TEXT("Hooked"), TEXT("OK"), MB_OK);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
解析:
DllMain,是這個DLL文件的入口函數,DLL被應用程序加載之後,這個函數就會被調用。
剛被加載,將進入DLL_PROCESS_ATTACH分支。示例的分支中僅僅彈出一個信息框。
其他幾個比較少用,如果想了解詳細情況,請參考MSDN。
該DLL可以在應用程序啓動的時候加載,也可以使用注入器注入。如果要在應用程序啓動的時候加載,則在應用程序中添加引用,將該DLL直接或者間接地添加到應用程序的IAT表中。
示例來源:
網易雲課堂《2019 PC 微信探祕》