回调监控模块加载
模块加载包括用户层模块(.DLL)和内核模块(.SYS)的加载。传统方法要监控这两者加在必须 HOOK 好几个函数,比如 NtCreateSection 和 NtLoadDriver
等,而且这些方法还不能监控未知的驱动加载方法。其实为了监控模块加载而HOOK API 是非常傻的,因为微软已经提供了一对标准的 API 实现此功能。它们
分别是 PsSetLoadImageNotifyRoutine 和 PsRemoveLoadImageNotifyRoutine,可以设置/取消一个“映像加载通告例程”,当有驱动或者 DLL 被加载时,回调函
数就会被调用。有人可能认为这个标准方法的监控非常表层,其实恰恰相反,这个方法非常底层,大部分隐秘的加载驱动的方法都可以绕过
Win64驱动内核编程:回调监控模块加载详解

本文介绍了如何使用Windows驱动编程中的PsSetLoadImageNotifyRoutine和PsRemoveLoadImageNotifyRoutine API来监控模块(包括驱动和DLL)的加载。通过设置映像加载通告例程,可以在模块加载时触发回调函数。通过判断回调函数参数来区分驱动加载与DLL加载,若要阻止驱动加载,可通过获取驱动的DriverEntry地址并写入"拒绝访问"的机器码实现。
最低0.47元/天 解锁文章
1733

被折叠的 条评论
为什么被折叠?



