如何获取其他进程命令行信息
每一个进程都有一个PEB数据块(PEB:Process Environment Block),这个进程环境块信息(如下结构体),
每个PEB中有_RTL_USER_PROCESS_PARAMETERS 结构体,是一个指针,指向一个结构体,这个结构体里面有一个CommandLine
命令行参数。所以要获得其他进程的命令行参数CommandLine,首先要获得其他进程的PEB结构体,通过_RTL_USER_PROCESS_PARAMETERS
得到它的结构体,结构体里面有CommandLine;
#include<Winternl.h>
typedef struct _PEB {//PEB结构 BYTE Reserved1[2]; BYTE BeingDebugged; BYTE Reserved2[1]; PVOID Reserved3[2]; PPEB_LDR_DATA Ldr; PRTL_USER_PROCESS_PARAMETERS ProcessParameters; BYTE Reserved4[104]; PVOID Reserved5[52]; PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine; BYTE Reserved6[128]; PVOID Reserved7[1]; ULONG SessionId; } PEB, *PPEB;
ntdll!_PEB+0x000InheritedAddressSpace : ??
+0x001ReadImageFileExecOptions : ??
+0x002BeingDebugged : ??
+0x003SpareBool : ??
+0x004Mutant : ????
+0x008ImageBaseAddress : ????
+0x00cLdr : ????
+0x010ProcessParameters : _RTL_USER_PROCESS_