如何更改通过ReadFile函数读取的文本

时间:2014-05-25 21:34:59

标签: c++ winapi detours

如何更改通过ReadFile函数读取的文本?我正在使用绕道来挂钩ReadFile函数调用。它工作正常(我认为是因为调试消息框),但我无法更改从文件中读取的文本。

static BOOL(WINAPI * true_read_file)(
  HANDLE hFile
  , LPVOID lpBuffer
  , DWORD nNumberOfBytesToRead
  , LPDWORD lpNumberOfBytesRead
  , LPOVERLAPPED lpOverlapped) = ReadFile;

BOOL WINAPI my_read_file(
  HANDLE hFile
  , LPVOID lpBuffer
  , DWORD nNumberOfBytesToRead
  , LPDWORD lpNumberOfBytesRead
  , LPOVERLAPPED lpOverlapped)
{
  MessageBoxA(NULL, "my_read_file", "Some caption", MB_OK);
  std::strcpy((char*)lpBuffer, "str"); // It doesn't work
  return TRUE;
}

我做错了什么?我该如何解决?

提前致谢。

1 个答案:

答案 0 :(得分:0)

错误1:你应该检查nNumberOfBytesToRead,它可能是1,所以你编码超出了缓冲区。

错误2:你错过了填写lpNumberOfBytesRead。