21,597
社区成员
发帖
与我相关
我的任务
分享
#define FILE_NAME (L"\\??\\c:\\tmp\\tmp")
#define MAX_SIZE 512
struct
{
ULONG Length;
UCHAR Str[MAX_SIZE];
} Buffer;
NTSTATUS status;
OBJECT_ATTRIBUTES objectAttributes;
IO_STATUS_BLOCK ioStatusBlock;
UNICODE_STRING filePath;
HANDLE handle;
RtlInitUnicodeString(&filePath, FILE_NAME);
InitializeObjectAttributes(
OUT &objectAttributes,
IN &filePath,
IN OBJ_CASE_INSENSITIVE,
IN NULL,
IN NULL
);
status = ZwCreateFile(
OUT &handle,
IN GENERIC_ALL | FILE_APPEND_DATA,
IN &objectAttributes,
OUT &ioStatusBlock,
IN NULL,
IN FILE_ATTRIBUTE_NORMAL,
IN FILE_SHARE_READ | FILE_SHARE_WRITE,
IN FILE_OPEN_IF,
IN FILE_SYNCHRONOUS_IO_NONALERT,
IN NULL,
IN 0);
if (!NT_SUCCESS(status))
{
DbgPrint("ZwCreateFile error\n");
return 0;
}
status = ZwWriteFile(
IN handle,
IN NULL,
IN NULL,
IN NULL,
OUT &ioStatusBlock,
IN Buffer.Str,
IN Buffer.Length,
IN NULL,
IN NULL
);
if (!NT_SUCCESS(status))
{
DbgPrint("ZwWriteFile error\n");
}
status = PsCreateSystemThread(
&threadHandle,
(ACCESS_MASK)0L,
NULL,
NULL,
NULL,
kbdFlush,
&FlushBuffer);