1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| InitializeObjectAttributes(&obja,&filepath,OBJ_CASE_INSENSITIVE,NULL,NULL); status = ZwDeleteFile(&obja);
InitializeObjectAttributes(&obja,&sourcefilepath,OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,NULL,NULL); status = ZwOpenFile(&hfile,FILE_READ_DATA,&obja,&iostack1,FILE_SHAR_READ|FILE_SHAR_WRITE,FILE_SYNCHRONOUS_NONALERT); status = ZwQueryInformationFile(&hfile,&iostack1,&fbi,sizeof(FILE_STANDARD_INFORMATION),FileStandInformation); filebuffer = ExAllocatePool(NonPagedPool,fbi.EndOfFile.QuadPart); RtlZeroMemory(filebuffer,fbi.EndOfFile.QuadPart); LARGE_INTEGER readoffset = {}; status = ZwReadFile(hfile,NULL,NULL,NULL,&iostack,filebuffer,fbi.EndOfFile.QuadPart,&readoffset,NULL);
InitializeObjectAttributes(&obja,&sourcefilepath,OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,NULL,NULL); status = ZwCreateFile(&hfile2,GENERIC_ALL,&obja2,&iostack2,NULL,FILE_SHARE_WRITE,FILE_SUPERSEDE,FILE_SYNCHRONOUS_IO_NONALERT,NULL,0);
status = ZwWriteFile(hfile2,NULL,NULL,NULL,&iostack2,filebuffer,fbi.EndOfFile.QuadPart,&writeoffset,NULL);
ExFreePool(filebuffer); ZwClose(hfile2);
|