[英]Finding the command line options a process was launched with
我正在尝试找出方法,目前正在使用CreateToolHelp32SnapShot来获取正在运行的进程的列表,并且已经获得了当前正在运行的可执行文件的FilePath,但是我需要能够找出使用了哪些命令行选项来启动该过程。
我知道这是可能的,因为您可以在Process Explorer上看到它,所以我尝试查找旧Process Explorer的源代码,但是没有运气:(
无法以可靠的方式获取正在运行的进程的命令行。 通过更改存储这些命令的内存,很有可能更改正在运行的进程的命令行。
Raymond Chen最近在此主题上做了一篇不错的文章,详细说明了为什么它不可靠。
检查NtQueryInformationProcess和ReadProcessMemory win API调用是否可以满足您的需求。 没有简单的示例,因此请在此处检查源代码: 使用NtQueryInformationProcess获取流程信息
获取此数据的另一种方法是通过WMI,如下所示:
SELECT CommandLine FROM Win32_Process WHERE ProcessId = ???
更多信息在这里: Win32_Process类
几乎立即发生的一种可能性是将线程注入目标进程( CreateRemoteThread
),并调用GetCommandLine
。
IIRC命令行参数存储在过程环境中-如果可以访问它,则也可以读取它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.