Я использую MS detours 3.0 Express для создания DLL, которая обходит функцию приложения.
Я использовал StudPE, чтобы войти в API DLL и подключить его к приложению.
Все отлично работает кроме это не будет работать на Windows XP.
Windows 7 работает нормально, хотя. И у меня заканчиваются идеи относительно того, почему это просто не будет работать на Windows XP.
Я скомпилировал его на компьютере с Windows 7 x64 с помощью Microsoft Visual Studio 2012.
Я звоню в 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 ничего не происходит, когда я пытаюсь запустить подключенное приложение.
Задача ещё не решена.
Других решений пока нет …