进程遍历工具(ProcessView)-

进程遍历工具(ProcessView)-

软件介绍

进程遍历工具(ProcessView),由吾爱大神原创制作的一个进程遍历工具,本次带来源码资源下载,使用C++编辑器环境进行导入编辑即可,可以在进程列表栏目上查询进程模块,进程线程,进程窗口等信息,查看进程和线程的ID,基址和大小等项目,是编程人员根据进程来进行一系列操作的好帮手。

进程遍历工具(ProcessView)

进程遍历工具作者说明

学习WIN32编程的时候,做了一个进程遍历工具,支持dll注入,供大家学习参考下

查询进程模块源码

//遍历模块信息,添加到列表

void CMyModuleInfoDlg::GetModuleInfo()

{

//拍进程快照

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, m_ProcessId);

//获取快照失败,直接返回

if (INVALID_HANDLE_VALUE == hSnapshot)

{

return;

}

MODULEENTRY32 me32 = { 0 };

me32.dwSize = sizeof(MODULEENTRY32);

//遍历进程

if (Module32First(hSnapshot, &me32))

{

int nRow = 0;

CString strFmt;

do

{

//将模块路径加入列表

m_ListCtrl.InsertItem(nRow, me32.szExePath);

//将模块基地址加入列表

strFmt.Format(_T("0x%016X"), me32.modBaseAddr);

m_ListCtrl.SetItemText(nRow, 1, strFmt);

//将模块大小加入列表

strFmt.Format(_T("0x%016X"), me32.modBaseSize);

m_ListCtrl.SetItemText(nRow, 2, strFmt);

nRow++;

} while (Module32Next(hSnapshot, &me32));

}

//关闭句柄

CloseHandle(hSnapshot);

相关新闻

进程原理:

首先通过CreateToolhelp32Snapshot函数创建一个进程的快照,然后通过调用Process32First使用快照返回的句柄对进程进行遍历,相关的信息存放在PROCESSENTRY32结构类型的实例中,通过调用内部的一个函数GetProcessModule,获取对应的进程的模块名称,然后通过对进程地址空间信息的读取,从而获取相应的线程的ID等的信息。