首页
社区
课程
招聘
[求助]大家在帮我一下,我也是没办法,完了这个在重头学基础!
发表于: 2009-3-29 14:10 5993

[求助]大家在帮我一下,我也是没办法,完了这个在重头学基础!

2009-3-29 14:10
5993
几个大牛让我学基础,我这是赶鸭子上桥,没得时间必须先完成这个!请帮忙。
还是昨天的读硬盘最后一个扇区内容,请看看下面怎么改:
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虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
你的DiskHandel哪儿来的?
2009-3-29 15:10
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
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 );      
  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));
2009-3-29 19:27
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
不打开handle就想访问...
2009-3-30 03:39
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
为啥这么多人ring3的常识问题都不知道就感驱来驱去?
2009-3-30 07:46
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
几个大牛让我学基础,我这是赶鸭子上桥,没得时间必须先完成这个!请帮忙。
还是昨天的读硬盘最后一个扇区内容,请看看下面怎么改:
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));
2009-3-30 09:18
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
对不起,排版的时候可能不小心弄没了,刚出差回来!
2009-3-30 09:20
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哎,一失足成千古恨!一不小心就在也得不到大家的指点了!
2009-4-3 19:05
0
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
人家不是告诉你了,handle没得到,下面对handle的一切操作都是无效的。

非要解释成这样才明白吗?

你得想法子得到这个有效的handle。
2009-4-3 19:51
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
已经得到了啊,第一次我排版时把得handle的句子弄没了,后来我加上去了就有了,dbg出来也是有效的handle!
2009-4-3 19:56
0
游客
登录 | 注册 方可回帖
返回
//