#include #include "hook.hpp" using namespace std; BOOL HookWriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped ) { //this will change the output to "shithooked!\n" const char* shithooked = "shithooked!?"; hook::disable(&WriteFile); BOOL result = WriteFile( hFile, shithooked, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped ); hook::enable(&WriteFile); return result; } int main() { //make hook hook::make_hook( &WriteFile, &HookWriteFile, false // you can choose not to install it yet ); //make file OFSTRUCT ofstruct{}; auto result = std::unique_ptr, decltype(&CloseHandle)>( (HANDLE)(OpenFile( "output.txt", &ofstruct, OF_READWRITE | OF_CREATE )), &CloseHandle ); if (reinterpret_cast(result.get()) != HFILE_ERROR) { // we can enable it after we open the file hook::enable(&WriteFile); //write to file const char aString[] = "Hello world!\n"; WriteFile(result.get(), aString, sizeof(aString), NULL, NULL); } }