在驱动程序级别检索进程的命令行参数

您好,我正在写一个微过滤驱动程序拦截所有的irp数据包从一个特定的进程说a.exe。

因此,在驱动程序代码中,可以通过对启动进程的命令行参数进行检查来完成。

有谁知道我如何检索命令行参数?

提前致谢 。

在内核模式下没有支持的方法。 实际上,试图从内核访问用户模式的进程信息是一件痛苦的事情。 我建议向用户模式服务发起一个请求,然后可以找到这些信息并将其传递回内核组件。

但是,有一个无证的方法来做到这一点。 如果您可以获得目标进程的EPROCESS结构的句柄,则可以获得指向其中的PEB (进程环境块)结构的指针,该指针指向RTL_USER_PROCESS_PARAMETERS结构,该结构具有名为CommandLine的成员。

例:

 UNICODE_STRING* commandLine = epProcess->Peb->ProcessParameters->CommandLine; 

不利之处在于, EPROCESS几乎完全不透明,而PEB也是半透明的,这意味着在未来的Windows版本中它可能会发生变化。 我当然不会主张在生产代码中尝试这个。

带有ProcessBasicInformation枚举的ZwQueryInformationProcess函数 在返回的结构中是一个指向PEB的指针,指向Polynonial。 对不起,我从手机上写下来。 🙂