我如何改变文本是通过ReadFile函数读取

How can I change text that is read via ReadFile function

本文关键字:ReadFile 读取 函数 文本 何改变 改变      更新时间:2023-10-16

如何更改通过ReadFile函数读取的文本?我使用detour来挂钩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:你应该检查nNumberOfBytesToRead,这是可能的1,所以你的代码溢出缓冲区。

错误2:您错过了填写lpNumberOfBytesRead.