几个大牛让我学基础,我这是赶鸭子上桥,没得时间必须先完成这个!请帮忙。
还是昨天的读硬盘最后一个扇区内容,请看看下面怎么改:
WCHAR HardDiskBuffer[] = L"\\Device\\Harddisk0\\DR0";
UNICODE_STRING HardDiskUnicodeString;
OBJECT_ATTRIBUTES objectAttributes;
HANDLE DiskHandel=INVALID_HANDLE_VALUE;
IO_STATUS_BLOCK ioStatus;
NTSTATUS ntStatus= STATUS_SUCCESS;
FILE_STANDARD_INFORMATION fsi;
FILE_POSITION_INFORMATION fpi;
UCHAR FileBuffer[512];
if (KeGetCurrentIrql() == PASSIVE_LEVEL){
RtlInitUnicodeString( &HardDiskUnicodeString, HardDiskBuffer);
KdPrint(("HardDiskBuffer:%S\n",HardDiskUnicodeString.Buffer));
InitializeObjectAttributes( &objectAttributes, &HardDiskUnicodeString,
OBJ_CASE_INSENSITIVE, NULL, NULL );
ntStatus = IoCreateFile(&DiskHandel ,FILE_ALL_ACCESS , &objectAttributes ,
&ioStatus ,NULL,FILE_ATTRIBUTE_NORMAL ,FILE_SHARE_READ ,
FILE_OPEN ,FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT ,
NULL,0,CreateFileTypeNone , 0,IO_NO_PARAMETER_CHECKING );//
这句先前排版时被弄没了
KdPrint(("ZwCreateFile:%08x\n",ntStatus));
KdPrint(("DiskHandel:%d\n",DiskHandel));
if(NT_SUCCESS(ntStatus)){
KdPrint(("createfile:ok\n"));
ntStatus = ZwQueryInformationFile(DiskHandel, &ioStatus, &fsi,
sizeof(FILE_STANDARD_INFORMATION), FileStandardInformation);
这个函数怎么不能返回SUCCESS?
KdPrint(("ZwQueryInformationFile:%08x\n",ntStatus));
if(NT_SUCCESS(ntStatus)){//
这里进不去
KdPrint(("EndOfFile:%d\n",fsi.EndOfFile));
fpi.CurrentByteOffset.LowPart = fsi.EndOfFile.LowPart-512;
ntStatus = ZwSetInformationFile(DiskHandel, &ioStatus, &fpi,
sizeof(FILE_POSITION_INFORMATION),
FilePositionInformation);//
这个函数不知道能不能返回SUCCESS?
if(NT_SUCCESS(ntStatus)){
KdPrint(("CurrentByteOffset:%d\n",fpi.CurrentByteOffset));
ntStatus = ZwReadFile(DiskHandel,NULL,NULL,NULL,&ioStatus,
FileBuffer,512,NULL,NULL);
这里也不知道能不能行
if(NT_SUCCESS( ntStatus)){
KdPrint(("read:%s\n",FileBuffer));
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法