oxygen1a1 发表于 2022-7-31 17:19

[Win10/Driver]枚举已加载内核(驱动)+对象钩子+对象类型(ObjectType)

运行环境:
WIN10
涉及工具:
VS2019+SDK+WDK
编程语言:
C 少量CPP特性
以下为主题内容:
如题,只针对win10。因为win10的PsLoadedModuleLIst这个变量导出了(可以用MmGetSystemRoutineAddress获取)示例:
windbg环境下输出


不用像低版本一样需要ShellCode定位这么麻烦
大体讲一下我都是怎么获取的

PsLoadedModuleList是win10已导出的
至于对象钩子,因为PsProcessType(一般也就这个有点用)是指向的OBJECT_TYPE这个内核对象
win10 _OBJECT_TYPE:
kd> dt _OBJECT_TYPE
nt!_OBJECT_TYPE
   +0x000 TypeList         : _LIST_ENTRY
   +0x010 Name             : _UNICODE_STRING
   +0x020 DefaultObject    : Ptr64 Void
   +0x028 Index            : UChar
   +0x02c TotalNumberOfObjects : Uint4B
   +0x030 TotalNumberOfHandles : Uint4B
   +0x034 HighWaterNumberOfObjects : Uint4B
   +0x038 HighWaterNumberOfHandles : Uint4B
   +0x040 TypeInfo         : _OBJECT_TYPE_INITIALIZER
   +0x0b8 TypeLock         : _EX_PUSH_LOCK
   +0x0c0 Key            : Uint4B
   +0x0c8 CallbackList   : _LIST_ENTRY
不难看出 +0xC8就是CallBack回调的LIST_ENTRY链表头 然后遍历就OK了
这里面弄了个小技巧 可以找出对象钩子所属的驱动 但是时间复杂度很点高
ObjectType获取比较麻烦
win10没有导出ObTypeIndexTable这个指向OBJECT_TYPE的变量
用的是ObGetObjectType内核函数+ShellCode定位。但是也蛮简单
总的来说,win10获取这些东西还是很简单的。
菜鸟作品,非0基础的请右上角。

**** Hidden Message *****

woaini 发表于 2022-7-31 18:35

谢谢分享

洛雪 发表于 2022-7-31 20:27

谢谢分享

pygicx 发表于 2022-8-1 10:51

谢谢分享 感谢老大{:5_116:}

2388916462 发表于 2022-8-2 16:18

{:5_116:}{:5_116:}

书序 发表于 2022-8-13 03:33


谢谢分享

关注编程 发表于 2022-8-14 20:47

好东西看看啊把

eas159159 发表于 2022-9-4 05:42

谢谢分享

雨弟 发表于 2022-9-8 22:55

谢谢分享

pingken 发表于 2022-9-13 16:07

非常感谢,学习了
页: [1] 2 3
查看完整版本: [Win10/Driver]枚举已加载内核(驱动)+对象钩子+对象类型(ObjectType)