Всем привет. Ситуация такая хук ssdt ZwOpenProcess. все отлично. запускаю некий процесс запускающий и изменяющий себя же, в логах открытие этого процесса на запись идет от процесс id 4 System. Почему ? Можно ли как-то узнать id реального процесса вызвавшего функцию? Спасибо.
Открывает его сторонний процесс, я лишь логирую его активность. Открывающему. Код (Text): NTSTATUS NTAPI NewZwOpenProcess( PHANDLE ProcessHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, PCLIENT_ID ClientId ) { // бла бла бла WriteLog( PsGetCurrentProcessId( ), DesiredAccess, ClientId ); // вызываем оригинал status = OriginalZwOpenProcess( ProcessHandle, DesiredAccess, ObjectAttributes, ClientId ); // бла бла бла }; Получается следующее, скажем процессы открываемые Process Explorer'ом для получения информации, чтения и т.д PsGetCurrentProcessId( ) возвращает идентификатор Process Explorer'ом что отображается в логах, но вот стоит (не буду греха тоить) запустить какой-то зловред который запускает себя же и модифицирует память, как в логах получается что открытие его с правами на запись идет от контекста системного потока... Скорее всего так и есть, например загрузка драйвера из пользовательского режима приведет к тому что ZwLoadDriver будет выполнятся в контексте services.exe. Но ситуация с ZwOpenProcess не совсем мне понятна. И может все-таки есть способ узнать откуда пришел вызов на самом деле? ps. система Windows xp sp2, sp3
movdqu Может можно взять отладчик и посмотреть откуда пришел вызов , тогда можно будет о чем то говорить ...