【发布时间】:2017-02-19 05:07:13
【问题描述】:
我想挂钩 NtReadFile 以便它可以更改从文件中读取的文本。但是当我尝试读取文件时,我收到消息“此应用程序无法启动,因为应用程序配置不正确”。
这是我的代码。怎么了?
NTSTATUS HookNtReadFile (
IN HANDLE FileHandle,
IN HANDLE Event,
IN PIO_APC_ROUTINE ApcRoutine,
IN PVOID ApcContext,
OUT PIO_STATUS_BLOCK IoStatusBlock,
OUT PVOID Buffer,
IN ULONG Length,
IN PLARGE_INTEGER ByteOffset,
IN PULONG Key)
{
NTSTATUS retstatus;
retstatus = glRealNtReadFile (FileHandle, Event, ApcRoutine, ApcContext, IoStatusBlock, Buffer, Length, ByteOffset, Key);
IoStatusBlock->Information = 3;
Length = 3;
Buffer = ExAllocatePool(PagedPool, Length);
Buffer = "hi";
return retstatus;
}
【问题讨论】:
-
您是否尝试过为该错误消息列出的steps?
-
你为什么要这样做?
-
@andlabs 这是我在大学的任务之一。我做了另一个钩子(NtCreateFile、NtOpenFile...),但是使用 NtReadFile 我遇到了一些问题。
-
你应该小心你的钩子。似乎您正在用
"hi"替换每个读取的文件。在这种情况下,这可能会妨碍 Windows 读取您的可执行文件或支持文件(如清单)。尝试仅更改对特定文件或特定程序的特定调用的结果。