c++进程遍历

c++进程遍历,第1张

遍历进程名和上下文

#include <ntifsh>

VOID

Unload(

IN PDRIVER_OBJECT DriverObject

);

VOID GetAllProcess(ULONG Address);

NTSTATUS

DriverEntry( IN PDRIVER_OBJECT DriverObject,

IN PUNICODE_STRING RegistryPath )

{

NTSTATUS status = STATUS_SUCCESS;

ULONG Address;

ULONG oldAddress;

//得到当前进程的地址

Address = (ULONG)PsGetCurrentProcess();

//得到EPROCESS中链表的偏移

Address += 0x88;

//用oldAddress保存当前进程链表的地址

oldAddress = Address;

//遍历进程链表

do

{

GetAllProcess(Address);

//让Address指向当前链表的下一个进程链表的地址(注意是Flink)

Address = (ULONG)Address;

}while( oldAddress!=Address );//当得到的链表地址与保存的地址相等说明遍历完整个线程链表,返回

DriverObject->DriverUnload = Unload;

return status;

}

VOID

Unload(

IN PDRIVER_OBJECT DriverObject

)

{

}

VOID GetAllProcess(ULONG Address)

{

//得到对应的EPROCESS结构

Address -= 0x88;

//EPROCESS偏移0x174为ImageFileName(进程名)

DbgPrint("ProcessName %s \n",(char)Address+0x174);

//EPROCESS偏移0x18为页目录物理地址

DbgPrint("Process Context %d \n",(ULONG)(Address+0x18));

}

请参考java API

public BufferedInputStream(InputStream in,

int size)创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个长度为 size 的内部缓冲区数组并将其存储在 buf 中。

参数:

in - 底层输入流。

size - 缓冲区大小。

抛出:

IllegalArgumentException - 如果 size <= 0

VC

获取进程线程数

#include

void

EnumProcess(void)

{

HANDLE

hProcessSnap;

HANDLE

hProcess;

PROCESSENTRY32

pe32;

DWORD

dwPriorityClass;

hProcessSnap

=

CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,

0);

if

(hProcessSnap

==

INVALID_HANDLE_VALUE)

{

return;

}

pe32dwSize

=

sizeof(PROCESSENTRY32);

if

(!Process32First(hProcessSnap,

&pe32))

{

CloseHandle(hProcessSnap);

return;

}

do

{

//printf("%s",

pe32szExeFile);

//完整文件名

//printf("%d",

(int)pe32cntThreads);//线程数

}while(Process32Next(hProcessSnap,

&pe32));

CloseHandle(hProcessSnap);

}

如果要获取进程句柄

HANDLE

hProcessHandle;

hProcessHandle

=

OpenProcess(0x1F0FFF,

true,

ProcessID);//ProcessID进程ID

这个在控制台,Win32

SDK

,MFC

都可以用的,只不过

SDK

,MFC

输出就

不用

printf

了,只要把获取的内容赋给变量就行了

以上就是关于c++进程遍历全部的内容,包括:c++进程遍历、java 获取process返回值的指定部分、用VC++编写程序,像任务管理器那样获得某个进程的句柄数,和线程数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10076350.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存