Собственно нашел в одной штуке для поиска процессов такой момент. В функцию EnumProcessModules передается не хэндл конкретного процесса, а какбы хендл их родительского (2В4, 2СС к примеру, который разный при каждом запуске этой программы). в итоге это все возвращает какойто хендл по которому дальше GetModuleFileNameA(psapi.dll) возвращает название и путь процесса. Тоесть для какого-то процесса перечесляются его модулями все процессы в системе. Дальше идет zwQuerySystemInformation (5) и по полученым отсюда PID сверяется кто скрытый. Может кто подскажет что это за хендл и откуда он может браться для EnumProcessModules. В данный момент это трудно выяснить по коду изза протектора.
SystemObjectInformation позволяет получить по указателю на обьект его родительский процесс, но для этого нужно соблюсти некоторые условия с начала запуска системы. EnumProcessModules() насколько помню выполняет примитивное чтение в цикле блока данных загрузчика в указанном процессе. Значит эта функция перечисляет модуля родительского процесса. Хэндл модуля - это термин, который вводит в заблуждение многих, это не дескриптор, а всеголишь адрес загрузки модуля. Значит возвращается имя модуля, из которого создан процесс. Вобщем бред.