我想从内核创建一个文件,并对它进行写入操作,写了份代码,可以创建文件,不过就是不能把内容写入到文件里,不知道哪里出错了,各位大侠帮忙看一下,先谢了。
以下是代码:
#include <ntddk.h>
#include <ntdef.h>
#include "ntifs.h"
#define FileName L"\\??\\C:\\Windows\\ForTestFile.txt"
VOID DriverUnload( IN PDRIVER_OBJECT pDriObj)
{
DbgPrint( "DriverUnload Called\n" );
}
NTSTATUS WorkSysThread()
{
NTSTATUS status;
CHAR *Content;
PHANDLE hFile;
UNICODE_STRING ObjectName;
UNICODE_STRING WriteContent;
IO_STATUS_BLOCK IoStatusBlock;
OBJECT_ATTRIBUTES FileObjAttr;
hFile = NULL;
Content = "ForTestContent";
RtlInitUnicodeString( &ObjectName,
FileName );
InitializeObjectAttributes( &FileObjAttr,
&ObjectName,
OBJ_OPENIF,
NULL,
NULL );
status = ZwCreateFile( hFile,
GENERIC_WRITE | SYNCHRONIZE | GENERIC_READ,
&FileObjAttr,
&IoStatusBlock,
0,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
FILE_OPEN_IF,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0 );
if( status == STATUS_SUCCESS )
{
DbgPrint( "Create File Successfully\n" );
status = ZwWriteFile( hFile,
NULL,
NULL,
NULL,
&IoStatusBlock,
Content,
strlen(Content),
NULL,
NULL );
if( !NT_SUCCESS( status ) )
{
DbgPrint( "Write File Failed!\n" );
return status;
}
ZwClose( hFile );
ZwDeleteFile( &FileObjAttr );
}
return status;
}
DriverEntry( IN PDRIVER_OBJECT pDriObj,
IN PUNICODE_STRING pRegistryPath )
{
NTSTATUS status;
HANDLE hThread;
pDriObj->DriverUnload = DriverUnload;
status = PsCreateSystemThread( &hThread,
0,
NULL,
NtCurrentProcess(),
NULL,
(PKSTART_ROUTINE)WorkSysThread,
NULL );
return status;
}
[培训]科锐逆向工程师培训第53期2025年7月8日开班!