Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include "detours.h"
- DETOUR_TRAMPOLINE(bool WINAPI DeviceIoControl_t(HANDLE hDevice,
- DWORD dwIoControlCode,
- LPVOID lpInBuffer,
- DWORD nInBufferSize,
- LPVOID lpOutBuffer,
- DWORD nOutBufferSize,
- LPDWORD lpBytesReturned,
- LPOVERLAPPED lpOverlapped),
- DeviceIoControl);
- bool WINAPI pDeviceIoControl(HANDLE hDevice,
- DWORD dwIoControlCode,
- LPVOID lpInBuffer,
- DWORD nInBufferSize,
- LPVOID lpOutBuffer,
- DWORD nOutBufferSize,
- LPDWORD lpBytesReturned,
- LPOVERLAPPED lpOverlapped)
- {
- bool bRet = DeviceIoControl_t(hDevice,
- dwIoControlCode,
- lpInBuffer,
- nInBufferSize,
- lpOutBuffer,
- nOutBufferSize,
- lpBytesReturned,
- lpOverlapped);
- // Magic could go here
- return bRet;
- }
- void WINAPI DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
- {
- if(ul_reason_for_call == DLL_PROCESS_ATTACH)
- DetourFunctionWithTrampoline((PBYTE)DeviceIoControl_t, (PBYTE)pDeviceIoControl);
- else if(ul_reason_for_call == DLL_PROCESS_DETACH)
- DetourRemove((PBYTE)DeviceIoControl_t, (PBYTE)pDeviceIoControl);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement