首页
社区
课程
招聘
读取BOOTSECTOR时的错误
发表于: 2009-5-8 15:48 3891

读取BOOTSECTOR时的错误

2009-5-8 15:48
3891
使用IoCreateFile打开C盘,ZwReadFile读取前512字节,bootserctor->OEMID是NTFS,bootserctor->BytesPerSector输出为802,实际结果应该是0X0200=512,WHY?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
2
你读偏了1个字节
2009-5-8 16:09
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
3
BootSector:
          00  01 02      03 04 05  06 07 08 09 0A              0B  0C                 0D 
0000000 : EB 52 90 (jmp) 46 54 46  53 20 20 20 20("NTFS    ")  00 02 (BytesPreSector) 08 (SectorsPreCluster)


本应读0xb,0xc偏移的0x200,偏了一个字节,到了0xd ,0xc,自然变成了0x0802

猜想原因是你的结构定义没加push/popback,默认按4字节对齐了,将前面的3字节跳转指令也做为4字节对齐了,因此向后偏了一个字节
2009-5-8 16:13
0
雪    币: 259
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是因为未定义导致,已经解决,THANKS!
2009-5-8 16:48
0
游客
登录 | 注册 方可回帖
返回
//