您好我正在编写一个minifilter驱动程序,用于拦截来自某个进程的所有irp数据包,例如a.exe。
因此,在驱动程序代码中,可以通过检查启动该进程的命令行参数来完成。
有谁知道如何检索命令行参数??
提前致谢。
答案 0 :(得分:4)
在内核模式下没有受支持的方法。实际上,尝试从内核访问用户模式进程信息通常很痛苦。我建议向用户模式服务发出一个请求,然后可以找到该信息并将其传递回内核组件。
但是,有一种无证的方法可以做到这一点。如果您可以获取目标进程的EPROCESS
结构的句柄,则可以获得指向其中PEB
(进程环境块)结构的指针,该结构随后具有指向{{ 3}}结构,其成员名为CommandLine
。
示例:
UNICODE_STRING* commandLine = epProcess->Peb->ProcessParameters->CommandLine;
这样做的缺点是EPROCESS
几乎完全不透明,PEB
也是半透明的,这意味着它可能会在未来的Windows版本中发生变化。我当然不会主张在生产代码中尝试这一点。
答案 1 :(得分:3)
带有ProcessBasicInformation枚举的ZwQueryInformationProcess函数。在返回的struct中,指向PEB的一个参数指针是指向Polynonial。 对不起我的格式化,我是用手机写的。 : - )