先将问题描述下,很奇怪
BOOL APIENTRY DllMain( HMODULE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
 )
{
    switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
g_hModDll = hModule;
Init();
}

//工作线程
DWORD WINAPI work_thread(LPARAM lparam)
{
// InstallHook((ULONG)MessageBoxA, (ULONG)nakeMessageBox);   #A
while(1)
{
MessageBoxA(NULL, "work_thread","",0);
Sleep(3000);
}
return 0;
}void Init()
{
// InstallHook((ULONG)MessageBoxA, (ULONG)nakeMessageBox);  #B
DWORD dwPID;
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)work_thread, NULL, 0, &dwPID);
if (hThread != INVALID_HANDLE_VALUE)
{
CloseHandle(hThread);
}
}主程序EXE和dll中定时MessabeBox,主程序动态加载dll
在A处进行HOOK,则主程序EXE和dll MessageBox为Hook后的
在B处进行HOOK,则主程序EXE和dll MessageBox没有被HOOK,调试查明,在Init()->HOOK后,内容改变,但在work_thread中hook的地方被还原了,不明,有高人能讲下不