Всем привет!
Сделал перехват функции ReadFile, но после перехвата начинает работать оригинальная функция, что быть не должно... Внедрил dll правильно в приложение. Помогите, пожалуйста!
Код:
| Код | #include "stdafx.h" #include <windows.h> #include <detours.h> #pragma comment (lib, "detours.lib")
static int (WINAPI * RealReadFile)(HANDLE,LPVOID,DWORD,LPDWORD,LPOVERLAPPED) = ReadFile; BOOL WINAPI MyReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) { //RealReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); // Если расскоментировать RealReadFile, то вызывает оригинальную функцию, ту которую я перехватывал return TRUE; // возвращает true, чтение по сути не произошло, в приложении (куда внедрил dll) данные считываются... }
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved) { if (dwReason == DLL_PROCESS_ATTACH) { DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&(PVOID&)RealReadFile, MyReadFile); DetourTransactionCommit(); } else if (dwReason == DLL_PROCESS_DETACH) { DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourDetach(&(PVOID&)RealReadFile, MyReadFile); DetourTransactionCommit(); } return TRUE; }
|
|