Есть программа, которая ставит sdt хуки на ZwQuerySystemInformation\ZwOpenProcess, и таким способом скрывает свой процесс + запрет открытия этого процесса. Задача: - из юзермода открыть этот процесс не зная pid процесса. Есть догадки, что можно реализовать это через csrss. Знаю что там хранятся хендлы процессов. Собственно вопрос: - как выдернуть оттуда хендл процесса, зная только имя этого процесса?
Great, и что искать ? Код (Text): SYSTEM_HANDLE_INFORMATION struct ProcessId ULONG ? ObjectTypeNumber UCHAR ? Flags UCHAR ? Handle USHORT ? Object PVOID ? GrantedAccess ACCESS_MASK ? SYSTEM_HANDLE_INFORMATION ends PSYSTEM_HANDLE_INFORMATION typedef PTR SYSTEM_HANDLE_INFORMATION Перечислить пока ProcessId = csrssPID и ObjectTypeNumber = OBJ_TYPE_PROCESS ?
Как это не зная? По имени? Но по имени узнать pid не составляет труда. Да. Потом копировать хэндл к себе, выуживать имя/pid процесса и решать, что с ним делать.
Токо что тестил, вроди работает.. Если выполняется условие: Делаю дубликат хендла, и вызываю ZwQueryInformationProcess по этому хендлу с инфоклассом = 27 Спасибо Вам, господа
Еще маленький вопросик.. А как убрать или закрыть хендл оттуда? Код (Text): invoke ZwClose,SYSTEM_HANDLE_INFORMATION.Handle Непрокатило..
Этот хэндл не принадлежит твоему процессу, его надо скопировать с помошью ZwDuplicateObject с опцией DUPLICATE_CLOSE_SOURCE, соотвественно закроется оригинальный и останется только закрыть свою копию чтоб удалить обьект.