本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 3886|回复: 0

枚举隐藏进程问题 [复制链接]

Rank: 1

发表于 2013-4-19 16:41:02 |显示全部楼层

在XP中通过遍历线程调度链 来枚举进程,发现枚举的进程不全。方法是使用网上熟透的技术KiWaitListHead和KiDispatcherReadyListHead,这里有几个问题要请教下:
等待和就绪两个链表枚举的进程不全?有没有正在执行的线程的链表?
  1. VOID DisplayList(PLIST_ENTRY ListHead, PALL_PROCESSES_INFO pAllProcessInfo)
  2. {
  3.         PKTHREAD Thread;
  4.         PKPROCESS pProcess;
  5.         PEPROCESS pEprocess;
  6.         DWORD dwCount = pAllProcessInfo->uCount;
  7.         PLIST_ENTRY List = ListHead->Flink;
  8.         if ( List == ListHead )
  9.         {
  10.                 return;
  11.         }
  12.         PLIST_ENTRY NextList = List;
  13.         while ( NextList != ListHead )
  14.         {
  15.                 Thread = CONTAINING_RECORD(NextList, KTHREAD, WaitListEntry);
  16.                 pProcess = (PKPROCESS)Thread->ApcState.Process;
  17.                 pEprocess = (PEPROCESS)pProcess;
  18.                 if (!NT_SUCCESS(ProcessIsFind((ULONG)pEprocess->UniqueProcessId, pAllProcessInfo)))
  19.                 {
  20.                         dwCount++;
  21.                         pAllProcessInfo->uCount = dwCount;
  22.                 }

  23.                 DbgPrint("ImageFileName = %s \n",pEprocess->ImageFileName);
  24.                 NextList = NextList->Flink;
  25.         }
  26. }


  27. EXTERN_C VOID EnumProcessByThreadList( IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp, IN PALL_PROCESSES_INFO pAllProcessInfo )
  28. {
  29.         _asm int 3
  30.         ULONG i;
  31.         for ( i = 0; i < 32 ;i++ )
  32.         {
  33.                 DisplayList(KiDispatcherReadyListHead + i, pAllProcessInfo);
  34.         }
  35.         DisplayList(KiWaitListhead, pAllProcessInfo);
  36. }
复制代码
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-5-21 21:44 , Processed in 0.043571 second(s), 8 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部