揰掵佲 发表于 2014-11-23 09:56:16

ring3下让OD能找到NP进程


BOOL
WINAPI
OdEnumProcesses(
    PULONG_PTRProcessId,
    ULONG       BufferSize,
    PULONG      Needed
)
{
    BOOLEAN                           Enabled;
    ULONG_PTR                           BufferCount, SizeNeeded;
    PSYSTEM_HANDLE_INFORMATION_EX       SystemHandles;
    PSYSTEM_HANDLE_TABLE_ENTRY_INFO_EXHandle;
    POLLYDBG_EX_INFO                  Info = g_Info;

    if (!Info->Modules.AdvEnumProcesses)
      return Info->Modules.StubEnumProcesses(ProcessId, BufferSize, Needed);

    BufferCount = BufferSize / sizeof(*ProcessId);

    SystemHandles = QuerySystemHandles();
    if (SystemHandles == NULL)
      return FALSE;

    MlHandleTable PidTable;

    if (PidTable.Create() == NULL)
    {
      ReleaseSystemInformation(SystemHandles);
      return FALSE;
    }

    SizeNeeded = 0;
    Handle = SystemHandles->Handles;
    for (ULONG_PTR HandleCount = SystemHandles->NumberOfHandles; HandleCount; ++Handle, --HandleCount)
    {
      HANDLE Process;
      NTSTATUS st;
      PROCESS_IMAGE_FILE_NAME2 ImageName;
      WCHAR proc;

      if (PidTable.Lookup(Handle->UniqueProcessId) != NULL)
            continue;

      PidTable.Insert(Handle->UniqueProcessId);
      if (BufferCount != 0)
      {
            --BufferCount;
            *ProcessId++ = Handle->UniqueProcessId;
      }

      SizeNeeded += sizeof(*ProcessId);
    }

    if (Needed != NULL)
      *Needed = SizeNeeded;

    ReleaseSystemInformation(SystemHandles);

    return TRUE;
}


小飞 发表于 2014-11-23 11:49:24

我貌似都看不懂。。

fengxin0007 发表于 2014-11-23 12:52:26

路过,谢谢楼主分享

只是一个酱油 发表于 2014-11-23 15:42:03

- -完全看不懂咋办。

2991239158 发表于 2014-11-23 21:22:06

这么好的资源,无条件抱走。

最终的幻象 发表于 2014-12-10 08:16:48

优秀文章!神马都是浮云,支持!

wo519815271 发表于 2014-12-23 20:33:34

完全看不懂,还是支持下。

hkoit 发表于 2016-1-12 22:53:10

我来看看!谢谢











static/image/common/sigline.gif
http://pic.yupoo.com/cjzihmxkq_v/BW3GBnmK/medium.jpg

bqadd 发表于 2016-11-30 18:12:17

很不错的啊
页: [1]
查看完整版本: ring3下让OD能找到NP进程