向Windows7移植驱动

向Windows7下移植一个驱动,花了半天时间,一开始还以为Windows7的版本号应该是7.0,写了程序后才知道原来是6.1,汗一个,Windows7在以下地方变动比较大:

1._object_header、_object_type及其其它与这些相关的结构,这块变化应该算比较大的,Vista及其以下版本都是在_object_header结构中保存object_type指针,在Windows7中Object_header只保存Object_type的索引,多了一张Object_type表。但Windows7中添加了一个函数,ObGetObjectType,返回Object_type对象指针,所以操作Object_type不需要硬编码了。

NTKERNELAPI
PVOID
NTAPI
ObGetObjectType(
      IN PVOID pObject
      );

2.在Vista及其以下系统中,一个线程在KeStackAttachProcess 后没有DetachProcess而直接再调用KeAttachProcess 不会有任何问题。但在Windows7下必须使用KeStackAttachProcess ,若使用KeAttachProcess 会在一段时间后出现莫名其妙的蓝屏。

3.SSDT index与Shadow SSDT index变化,这个显而易见,不说了。

4.EProcess结构中的线程双向链表的偏移还是0x50,但EThread相对与List_Entry的偏移变成-0x1e4,_PEB的偏移变成0x1a0

5.消息钩子注入Dll,KeUserModeCallback的ApiNum变成0x41

 

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright langouster. Some Rights Reserved.   苏ICP备06046736号   

本站点由 Z-Blog 2.0 bate Build 构建,基于 Glued Ideas Subtle 主题,由 zx.asd 移植并创新.