首页
社区
课程
招聘
怎么样得到Windows内核的驱动首地址,有几种方法?
发表于: 2012-9-21 23:05 4671

怎么样得到Windows内核的驱动首地址,有几种方法?

2012-9-21 23:05
4671
我所知道的一种是ZwQuerySystemInformation(SystemModuleInformation,x,x,x)

另外知道Driver_Object可以知道这个Driver在内存中的首地址吗?我是可以遍历Driver_Section得到内核驱动的名称,但这些信息还不够,没有首地址。

谢谢

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
nt!_DRIVER_OBJECT
   +0x000 Type             : Int2B
   +0x002 Size             : Int2B
   +0x004 DeviceObject     : Ptr32 _DEVICE_OBJECT  //设备对象
   +0x008 Flags            : Uint4B
   +0x00c DriverStart      : Ptr32 Void  //驱动首地址
   +0x010 DriverSize       : Uint4B
   +0x014 DriverSection    : Ptr32 Void
   +0x018 DriverExtension  : Ptr32 _DRIVER_EXTENSION
   +0x01c DriverName       : _UNICODE_STRING
   +0x024 HardwareDatabase : Ptr32 _UNICODE_STRING
   +0x028 FastIoDispatch   : Ptr32 _FAST_IO_DISPATCH
   +0x02c DriverInit       : Ptr32     long
   +0x030 DriverStartIo    : Ptr32     void
   +0x034 DriverUnload     : Ptr32     void
   +0x038 MajorFunction    : [28] Ptr32     long
2012-9-21 23:20
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
非常感谢楼上的解答。能讲讲有几种方法吗?
2012-9-22 11:12
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
4
暴力搜索driver_object
driverobject链表
ZwQuerySystemInformation
driver对象目录

...等待
2012-9-22 12:05
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
hi,是这样,我尝试了下通过Driver_Section反推Driver_Object中各项的地址,结果发现也不好搞。

通过下面语句可以遍历得到下一个链表指向的Driver_Section,通过得到的这个Driver_Section可以得到Driver_Name:
current_Driver_Section = (DRIVER_SECTION*)(first_Driver_Section->listEntry.Flink);

但是问题来了,要得到Driver_Start必须先得到current_Driver_Section在Driver_Object中的地址,然后通过加减得到Driver_Start的地址。但这个current_Driver_Section在Driver_Object中的地址,我目前无法得到
通过 ¤t_Driver_Section得到的地址明显是错的,这个地址只是指向一个声明current_Driver_Section变量时建立的内存地址,和Driver_Object结构体完全没关系。
2012-9-22 14:38
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Driver_Section中有驱动的基址和入口点等等信息。可直接获取即可。
2012-9-30 18:14
0
游客
登录 | 注册 方可回帖
返回
//