-
-
[求助]minifilter怎么拦截进程启动参数?
-
发表于:
2022-4-17 13:00
9724
-
[求助]minifilter怎么拦截进程启动参数?
之前经过大侠们指点已成功实现minifilter做R0和R3通讯拦截文件加载和启动,但发现只能拦截文件路径,对于启动参数似乎没找到相关的结构属性。查了网上资料都是通过EPROCESS、PEB结构或者Hook CreateProcess获取exe的启动参数,但在minifitler中此时进程还没有创建成功,没有EPROCESS、PEB这些结构,那么和文件路径一起的启动参数在哪里获取呢?翻遍了IRP的各个属性都没找到。难道还要再挂钩CreateProcess才能拦截到lpCommandLine参数?
更新:下面有大佬提到用ProcessNotifyExRoutineEx来拦截进程创建获取启动参数---这个方案经测试可行,但是却带来另一个问题:如果一台多用户计算机上A、B、C三个用户同时登陆,并且每个用户在各自的session都启动了同一个R3的监控程序(运行在不同session),那么此时如果ProcessNotifyExRoutineEx拦截到一个进程启动事件,怎么判断是哪个session发起的进程启动事件?又怎么向运行在这个session的R3程序发送fltSendMessage消息呢?如果是在minifilter的PreOperation会有一个ClientCookie参数标识是哪个客户端发起的,可以解决用户标识问题(却解决不了启动参数拦截问题);但是在ProcessNotifyExRoutineEx中没有这个ClientCookie参数,虽然可以拦截启动参数,却又解决不了客户端识别的问题。。。。继续请教各位大佬有没有更完美的方案既能拦截启动参数,又能标识分辨客户端调用fltSendMessage回发消息呢?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-4-18 00:45
被碧水秋沙编辑
,原因: