-
-
[求助]遍历EPROCESS链出现的问题
-
发表于:
2009-2-25 20:59
5142
-
今天试着写一个简单的通过EPROCESS遍历系统所有进程的程序
代码如下
#include <ntddk.h>
#define UNIQUEPROCESSID 0x84
#define ACTIVEPROCESSLINKS 0x88
#define IMAGEFILENAME 0x174
VOID Unload (PDRIVER_OBJECT DriverObject)
{
DbgPrint("Unload Routine.\n");
}
VOID EnumProcessFromEPROCESS (ULONG pe)
{
ULONG cur = pe;
ULONG cnt = 0;
do
{
cnt ++;
DbgPrint("eprocess: %08x\n", cur);
DbgPrint("PID: %d NAME: %s\n", *(PULONG)(cur+UNIQUEPROCESSID), (PUCHAR)(cur+IMAGEFILENAME));
cur = *(PULONG)(cur+ACTIVEPROCESSLINKS) - ACTIVEPROCESSLINKS;
} while (cur != pe);
DbgPrint("Total %d processes founded.\n", cnt);
}
NTSTATUS DriverEntry (IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath)
{
ULONG pEpro;
DriverObject->DriverUnload = Unload;
pEpro = (ULONG)PsGetCurrentProcess();
EnumProcessFromEPROCESS(pEpro);
return STATUS_SUCCESS;
}
代码很简单 就是遍历链表而已
然而得到的结果却令人感到奇怪
如下图
第一: 显示有85个进程 我的系统并没有运行这么多进程啊!
上面有很多重复的进程不知道为什么也在链表中,还有一些进程并没有运行也在链表中。
不解~~
第二: 看倒数第三行,这个EPROCESS显示不出PID和NAME,但它就是在链表中,也不知道这个是什么,还望解答,不胜感激!
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法