挂钩 NtReadFile。更改文本
Hook NtReadFile. Change text
我想连接 NtReadFile 以便它可以更改从文件中读取的文本。但是当我尝试读取文件时,我收到消息 "This application has failed to start because the application configuration is incorrect".
这是我的代码。怎么了?
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;
}
http://www.rohitab.com/discuss/topic/40492-my-first-kernel-mode-rootkit/
我知道它看起来很狡猾 link。但您所寻求的答案,只需点击一下即可找到。
这显然行不通:
Buffer = ExAllocatePool(PagedPool, Length);
Buffer = "hi";
您正在分配内存,然后立即丢弃该地址。这不是您在 C 中复制字符串的方式。您需要使用 strcpy
,或者最好使用更安全的替代方法之一。
还值得指出的是,本机 API 不使用 ASCII 字符。一般来说,所有字符串都应该是宽字符串。
最后,如果 return 代码指示成功,并且(正如其他人在评论中指出的那样)当文件句柄与您正在尝试的特定文件相关联时,您应该只更改值改变。
我想连接 NtReadFile 以便它可以更改从文件中读取的文本。但是当我尝试读取文件时,我收到消息 "This application has failed to start because the application configuration is incorrect".
这是我的代码。怎么了?
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;
}
http://www.rohitab.com/discuss/topic/40492-my-first-kernel-mode-rootkit/
我知道它看起来很狡猾 link。但您所寻求的答案,只需点击一下即可找到。
这显然行不通:
Buffer = ExAllocatePool(PagedPool, Length);
Buffer = "hi";
您正在分配内存,然后立即丢弃该地址。这不是您在 C 中复制字符串的方式。您需要使用 strcpy
,或者最好使用更安全的替代方法之一。
还值得指出的是,本机 API 不使用 ASCII 字符。一般来说,所有字符串都应该是宽字符串。
最后,如果 return 代码指示成功,并且(正如其他人在评论中指出的那样)当文件句柄与您正在尝试的特定文件相关联时,您应该只更改值改变。