【发布时间】:2013-12-02 10:11:38
【问题描述】:
我正在使用 mhook C++ lib 来挂钩 WinAPI。我有个问题.. 这是一个钩子函数:
BOOL WINAPI HookedReadFile(
_In_ HANDLE hFile,
_Out_ LPVOID lpBuffer,
_In_ DWORD nNumberOfBytesToRead,
_Out_opt_ LPDWORD lpNumberOfBytesRead,
_Inout_opt_ LPOVERLAPPED lpOverlapped)
{
if (inWork && hFile == CryptedFileHandle)
{
DWORD readedCount = 0;
DWORD toReadCount = nNumberOfBytesToRead;
LPBYTE Buf = new BYTE[toReadCount];
BOOL result = OriginalReadFile(hFile, Buf, toReadCount, &readedCount, NULL);
if (result && readedCount > 0)
{
// decryption routine will be here
std::copy(Buf, Buf + readedCount, (LPBYTE)lpBuffer);
}
lpNumberOfBytesRead = &readedCount;
delete[] Buf;
return result;
} else
return OriginalReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped);
}
这必须很简单。如果其加密文件应用程序将动态解密字节(简单的异或)。
但它不起作用。我认为问题出在std::copy(Buf, Buf + readedCount, (LPBYTE)lpBuffer); 因为程序无法正常读取此文件。
【问题讨论】:
标签: c++ winapi visual-c++ hook