www.pudn.com > API Hook 工具相关代码 apihooktest.rar > HSock.cpp
// HSock.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "HSock.h"
#include "Hooks.h"
void GetMePath(char* pszPath);
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
char szBuf[MAX_PATH];
char szCurPath[MAX_PATH];
GetMePath(&szCurPath[0]);
strcat(szCurPath, "config.ini");
GetPrivateProfileString("Option", "LogFilePath", "C:\\Hooks.log",
&szBuf[0], MAX_PATH, szCurPath);
::DeleteFile(szBuf);
CHookHelper* pHelper = (CHookHelper*)GetHookHelper();
pHelper->SetLogFilePath(szBuf);
pHelper->Log("Start Hook Funtions ......");
if(pHelper)
{
pHelper->hookApi.HookFunFromConfigFile();
}
pHelper->Log("/************************************************************/");
}
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
IHookHelper* GetHookHelper()
{
static CHookHelper hookHelper;
return (IHookHelper*)&hookHelper;
}
void GetMePath(char* pszPath)
{
GetModuleFileName(GetModuleHandle("Hook.dll"), pszPath, MAX_PATH);
for(int i = strlen(pszPath) - 1; i >= 0; i--)
{
if(pszPath[i] == '\\')
{
pszPath[i+1] = NULL;
break;
}
}
}