功能:获取正在运行进程的Pid
实现原理:通过创建一个系统快照,进行遍历所有的进程名称。通过比对进程
名称,来获取进程的PID值。
功能:获取正在运行进程的指定模块的基地址数据。
实现步骤:通过PEB获取进程所加载的模块。
1、获取正在运行指定进程的_PEB结构。
2、通过_PEB的Ldr成员获取_PEB_LDR_DATA结构。
3、通过_PEB_LDR_DATA的InMemoryOrderModuleList成员获取_LIST_ENTRY结构。
4、通过_LIST_ENTRY的Flink成员获取_LDR_DATA_TABLE_ENTRY结构,注意:这里的Flink指向的是_LDR_DATA_TABLE_ENTRY结构中的InMemoryOrderLinks成员,因此需要计算真正的_LDR_DATA_TABLE_ENTRY起始地址。
5、输出_LDR_DATA_TABLE_ENTRY的BaseDllName或FullDllName成员信息。
功能:获得到整个进程的内存数据
实现步骤:
1、打开要操作的指定进程,并获取进程的句柄。
2、通过读取PE文件结构方式,进行读取正在运行的内存数据: DosHeader->NtHeader->区段表。
3、将读取到的内存数据,写入到文件。