我正在使用 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 上,当我尝试运行挂钩的应用程序时没有任何反应。