EzProcess
一个进程和线程管理器应用程序。
引言
EzProcess 是一个 GUI 可执行应用程序,它显示有关所有正在运行的进程的信息:进程名称、进程 ID、父 ID 和优先级。 此外,还显示所选进程的所有线程(以及它们的基准优先级)和加载的模块(DLL)。
内部
EzProcess 基于七个 API 函数,即 CreateToolhelp32Snapshot
、Process32First
、Process32Next
、Thread32First
、Thread32Next
、Module32First
和 Module32Next
。
获取所有正在运行的进程
通过使用 TH32CS_SNAPPROCESS
或 TH32CS_SNAPTHREAD
标志调用 CreateToolhelp32Snapshot
API 函数来创建快照。 之后,调用 Process32First
API 函数检索系统快照中遇到的第一个进程的信息。 最后,重复调用 Process32Next
,检索快照中记录的所有进程的信息。 代码如下:
Invoke CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS OR TH32CS_SNAPTHREAD, NULL
MOV hSnapShot,EAX
;Get first process
MOV ProcEntry32.dwSize,SizeOf PROCESSENTRY32
Invoke Process32First,hSnapShot,ADDR ProcEntry32
@@:
.If EAX
;Display
;Process
;Information
;
;
;Get Next process
Invoke Process32Next,hSnapShot,ADDR ProcEntry32
JMP @B
.EndIf
获取所选进程的线程
调用 Thread32First
API 函数检索上述创建的快照中遇到的任何进程的第一个线程的信息。 如果创建线程的进程的标识符(ThreadEntry32.th32OwnerProcessID
)是所选进程的 ID,则将其显示。 重复调用 Thread32Next
并如上所述比较 ID,检索所选进程的所有线程的信息。 代码如下:
;Get first thread
MOV ThreadEntry32.dwSize,SizeOf THREADENTRY32
Invoke Thread32First,hSnapShot,ADDR ThreadEntry32
@@:
.If EAX
.If ThreadEntry32.th32OwnerProcessID==EDI
;Display
;Thread
;Information
;
;
;
.EndIf
;Get Next Thread
Invoke Thread32Next,hSnapShot,ADDR ThreadEntry32
JMP @B
.EndIf
获取与所选进程关联的模块
为了获取与所选进程关联的模块,我们需要获取一个包含指定进程的模块列表的 新的 快照。 使用新创建的快照,我们通过使用 API 函数 Module32First
和 Module32Next
迭代与指定进程关联的所有模块。
;Let's create a new snapshot that includes the module list of the specified process
Invoke CreateToolhelp32Snapshot,TH32CS_SNAPMODULE,EDI
MOV EBX,EAX
;Get first Module
MOV ModuleEntry32.dwSize,SizeOf MODULEENTRY32
Invoke Module32First,EBX,ADDR ModuleEntry32
@@:
.If EAX
;Display
;Module
;Information
;
;
;Get Next Module
Invoke Module32Next,EBX,ADDR ModuleEntry32
JMP @B
.EndIf
Invoke CloseHandle,EBX
扩展功能
此外,EzProcess 进程/线程管理器能够终止选定的进程。 如下所示:
Invoke OpenProcess,PROCESS_TERMINATE, FALSE,lvi.lParam ;where lvi.lParam is the process ID
.If EAX
MOV EBX,EAX ;hProcess
Invoke TerminateProcess,EBX,0
.If !EAX
Invoke ErrorMessage
.EndIf
Invoke CloseHandle,EBX ;hProcess
.Else
Invoke ErrorMessage
.EndIf
最后说明
EzProcess 是一个正在积极开发的項目,Jupiter 已经着手改进它。 您始终可以在 项目 论坛的 WinAsm Studio 论坛上查看更新版本。
未使用。
新版本 v1.82 已发布(完整源代码)。 您可以在 EzProcess 上找到它。