#include <ntddk.h>
UCHAR * PsGetProcessImageFileName(__in PEPROCESS Process);
HANDLE PsGetProcessInheritedFromUniqueProcessId(__in PEPROCESS Process);
VOID HelloDDKUnload(IN PDRIVER_OBJECT pDriverObject)
{
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath)
{
pDriverObject->DriverUnload = HelloDDKUnload;
DbgBreakPoint();
PUCHAR pCurrentProcessName;
HANDLE InheritedFromUniqueProcessId;
HANDLE UniqueProcessId;
PEPROCESS CurrentProcess;
PLIST_ENTRY ListEntry;
static int ActiveProcessLinks = 0x088; //测试用(这里是XP系统)
PLIST_ENTRY pProcessActiveProcessLinks = 0;
CurrentProcess=PsGetCurrentProcess();
pProcessActiveProcessLinks = (PLIST_ENTRY)((ULONG_PTR)CurrentProcess + ActiveProcessLinks);
for (ListEntry = pProcessActiveProcessLinks->Flink;ListEntry != pProcessActiveProcessLinks;ListEntry = ListEntry->Flink)
{
CurrentProcess = (PEPROCESS)(*(ULONG_PTR*)((ULONG_PTR)CurrentProcess + ActiveProcessLinks) - ActiveProcessLinks);
UniqueProcessId=PsGetProcessId(CurrentProcess);
pCurrentProcessName=PsGetProcessImageFileName(CurrentProcess);
InheritedFromUniqueProcessId=PsGetProcessInheritedFromUniqueProcessId(CurrentProcess);
KdPrint(("%d %d %s\n", UniqueProcessId, InheritedFromUniqueProcessId, pCurrentProcessName));
}
return STATUS_SUCCESS;
}
遍历_EPROCESS->ActiveProcessLinks链表枚举进程
最新推荐文章于 2023-06-23 17:07:34 发布