我正在使用MS detours 3.0 Express创建一个绕过应用程序功能的DLL 我使用StudPE进入dll API并将其挂钩到应用程序 一切正常,除了它不适用于Windows XP 。
Windows 7工作正常。而且我已经没想到为什么它不适用于Windows XP。
我使用Microsoft Visual Studio 2012在Windows 7 x64计算机上编译它。
我正在调用DllMain我的代码是:(只是相关代码 - 不完整)
extern "C" __declspec(dllexport) INT APIENTRY DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved)
{
switch(Reason) {
case DLL_PROCESS_ATTACH: //Do standard detouring
DisableThreadLibraryCalls(hDLL);
//AllocConsole();
//
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)pSend, MySend);
if(DetourTransactionCommit() == NO_ERROR) {
cout << "[" << MySend << "] successfully detoured." << endl;
}
break;
case DLL_PROCESS_DETACH:
DetourTransactionBegin(); //Detach
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)pSend, MySend);
DetourTransactionCommit();
break;
}
return TRUE;
}
在WinXP上,当我尝试运行挂钩的应用程序时没有任何反应。