BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if(DLL_PROCESS_ATTACH == ul_reason_for_call)
{
::MessageBox(NULL, "11111111111111", "222", 0);
ofstream out("c:\\1.txt", ios::app);
out<<"Dll Insert!"<<endl;
out.close();
DWORD dwThredId = 0;//MessageBox和写入文件是测试
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)InitDllThreadProc, NULL, 0, &dwThredId);
}
return TRUE;
}DLL只是在DLL_PROCESS_ATTACH的时候创建一个线程,在我的机器上工作正常,但是到了朋友机器上就不正常了,都是XP系统,我加入MessageBox和写入文件做测试,在朋友机器上发现没有弹出对话框,也没有向文件写入数据,感觉就是DllMain没有被调用(在我的机器上有弹出对话框,也有数据写入文件),但是我用工具查看进程导入的模块,发现DLL已经注入;
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if(DLL_PROCESS_ATTACH == ul_reason_for_call)
{
::MessageBox(NULL, "11111111111111", "222", 0);
ofstream out("c:\\1.txt", ios::app);
out<<"Dll Insert!"<<endl;
out.close();
DWORD dwThredId = 0;//MessageBox和写入文件是测试
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)InitDllThreadProc, NULL, 0, &dwThredId);
}
return TRUE;
}DLL只是在DLL_PROCESS_ATTACH的时候创建一个线程,在我的机器上工作正常,但是到了朋友机器上就不正常了,都是XP系统,我加入MessageBox和写入文件做测试,在朋友机器上发现没有弹出对话框,也没有向文件写入数据,感觉就是DllMain没有被调用(在我的机器上有弹出对话框,也有数据写入文件),但是我用工具查看进程导入的模块,发现DLL已经注入;
在 _DllMainCRTStartup 加断点, 调试
还有就是要在DLLMAIN里面创建线程最好先DisableThreadLibraryCalls;
因为加栽你的DLL的时候程序可能还没有加栽你在DLLMain中调用函数需要的DLL
如果DLL被加栽进去的话DLLMAIN是会被调用的
你用MessageBox 来判断是否加栽是不合适的