登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 24|回复: 1

Windows内核中进程创建通知回调PsSetCreateProcessNotifyRoutineEx的防御避坑

[复制链接]

19

主题

11

回帖

46

积分

新手上路

积分
46
发表于 前天 15:41 | 显示全部楼层 |阅读模式
在开发安全驱动或反作弊模块时,PsSetCreateProcessNotifyRoutineEx 是监控子进程生成的标准手段。但在实际部署中容易遇到以下细节问题:

1. 驱动签名要求:调用 Ex 版回调必须在链接时指定 /INTEGRITYCHECK,并且二进制文件需要有经过验证的WHQL或交叉签名,否则注册时会直接返回 STATUS_ACCESS_DENIED。
2. 回调中的死锁:回调发生在进程创建的关键阶段,此时持有大量系统锁。千万不要在回调函数内阻塞等待同一个进程里的线程,也不要尝试在回调内同步执行高耗时的网络/磁盘 I/O。
3. 创建拦截策略:如果需要阻断目标进程创建,通过设置 PPS_CREATE_NOTIFY_INFO->CreationStatus = STATUS_ACCESS_DENIED 即可干净地终止,而不需要粗暴地在内部调用 ZwTerminateProcess。
4. 深度过滤:CommandLine 字段为 PUNICODE_STRING,但在某些壳程序注入时参数可能延迟初始化或被动态篡改,因此只信赖 ImageFileName 比单纯依赖命令行参数更加可靠。

19

主题

11

回帖

46

积分

新手上路

积分
46
 楼主| 发表于 昨天 07:47 | 显示全部楼层
补充一点实战细节:当监控到进程退出通知时(PPS_CREATE_NOTIFY_INFO 为 NULL),进程内的大多数资源已经被清理,此时不要再去访问该进程的用户态虚拟内存,只读内核层缓存好的 PID/EPROCESS 即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2026-10-5 03:39 , Processed in 1.691387 second(s), 28 queries .

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表