我正在尝试制作一个小型代理 dll,它将能够打印出游戏尝试从磁盘访问的所有文件。
我正在使用 dinput8 包装器 dll 作为我的代理 dll,从中我设法附加了一个控制台并打印出一些东西。但我想我不明白我应该如何挂钩 ReadFile 函数。
首先,我不确定这是否可能,因为我想为 ReadFile 创建和导出一个包装函数,它的声明与我要包装的 dll 位于完全不同的 dll 中。
我现在正在尝试(并且它不起作用)是声明一个 ReadFile_wrapper 函数,它现在实际上正在调用原始函数:
extern "C" BOOL WINAPI ReadFile_wrapper(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
{
MessageBoxA(NULL, "Reading", "", 0);
return ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped);
}
此外,我在 .def 文件中声明了一个定义,以便导出函数的名称类似于原始 ReadFile 函数
...
ReadFile=ReadFile_wrapper
我显然在这里遗漏了一些关键的东西,所以非常感谢任何帮助。




