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

Posted

技术标签:

【中文标题】如何更改通过 ReadFile 函数读取的文本【英文标题】:How can I change text that is read via ReadFile function 【发布时间】:2014-05-25 21:34:58 【问题描述】:

?我正在使用 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】:

错误1:你应该检查nNumberOfBytesToRead,有可能是1,所以你的代码溢出了缓冲区。

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

【讨论】:

以上是关于如何更改通过 ReadFile 函数读取的文本的主要内容,如果未能解决你的问题,请参考以下文章

“ReadFile 函数”有没有办法让我不再声明要读取的特定字节数?

Windows 中的 ReadFile()

QT读取文本文件

PHP 文件打开/读取/读取

使用 ReadFile 函数从进程中读取数据

如何在 Node JS 中读取文本文件并将其作为 JSON 对象返回?