首页
社区
课程
招聘
[原创] 在WinDbg中观察驱动的启动顺序
发表于: 2017-3-16 15:04 2503

[原创] 在WinDbg中观察驱动的启动顺序

2017-3-16 15:04
2503

通过使用windbg,在操作系统加载驱动的关键位置下断点,从而获得驱动的名称,关键是要找准操作系统加载驱动的位置.


“引导-启动”类型的驱动早已被系统加载器加载到内核。
I/O系统会调用IopInitializeBuiltinDriver函数完成“引导-启动”类型的驱动的初始化工作
NTSTATUS
IopInitializeBuiltinDriver(
    IN PUNICODE_STRING DriverName,
    IN PUNICODE_STRING RegistryPath,
    IN PDRIVER_INITIALIZE DriverInitializeRoutine,
    IN PKLDR_DATA_TABLE_ENTRY DriverEntry,
    IN BOOLEAN IsFilter,
    OUT PDRIVER_OBJECT *Result
    );
第一个变量为驱动名称
第二个变量为驱动注册表路径
因此,就可以在IopInitializeBuiltinDriver函数下断点,打印出这两个变量

bp nt!IopInitializeBuiltinDriver ".echo DriverName;!ustr poi(esp+4);.echo RegistryPath;!ustr poi(esp+8);gc"



“系统-启动”类型的驱动和正常运行过程中动态加载的驱动都是使用IopLoadDriver这个通用函数加载入内核,IopLoadDriver会调用 MmLoadSystemImage函数,将驱动加载到系统地址空间。
在MmLoadSystemImage函数下断点,就可以看到加载的驱动文件路径

bp nt!MmLoadSystemImage “.echo Driver File;!ustr poi(esp+4);gc”




[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//