информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Крупный взлом GoDaddy 
 Просроченный сертификат ломает... 
 Phrack #70/0x46 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Как оттуда получить имя процесса? 15.10.02 14:42  Число просмотров: 1607
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> PsGetCurrentProcess не катит, т.к, похоже выдает
> родительский процесс(во всяком случае путается).
> пробовал PsReferenceObjectByHandle, но он валится, в лучшем
> случае требует указать какой-то недокументированный тип
> объекта (если вообще с хендлом процесса работает).

откуда "оттуда"?

из PsSetCreateProcessNotifyRoutine или ZwCreateProcess?

в принципе получить имя стартового модуля процесса можно разными способами... попробуй так:

если пытаться получить имя модуля из hook-a ZwCreateProcess, то после успешного выполнения ZwCreateProcess, в твоем распоряжении оказывается HANDLE этого процесса, который можно использовать для получения дополнительной инфы о процессе:

NTSYSAPI
NTSTATUS
NTAPI
ZwQueryObject(
   IN HANDLE ObjectHandle,
   IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
   OUT PVOID ObjectInformation,
   IN ULONG ObjectInformationLength,
   OUT PULONG ReturnLength OPTIONAL
);

typedef enum _OBJECT_INFORMATION_CLASS {
   ObjectBasicInformation,//0 Y N
   ObjectNameInformation,//1 Y N
   ObjectTypeInformation,//2 Y N
   ObjectAllTypesInformation,//3 Y N
   ObjectHandleInformation //4 Y Y
} OBJECT_INFORMATION_CLASS;

typedef struct _OBJECT_NAME_INFORMATION {//Information Class 1
   UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION,*POBJECT_NAME_INFORMATION;

---

если же пытаться получить эту информацию из PsSetCreateProcessNotifyRoutine то для получения HANDLE-а на процесс можно использовать ф-ю:

NTSYSAPI
NTSTATUS
NTAPI
ZwOpenProcess(
   OUT PHANDLE ProcessHandle,
   IN ACCESS_MASK DesiredAccess,
   IN POBJECT_ATTRIBUTES ObjectAttributes,
   IN PCLIENT_ID ClientId OPTIONAL
);

---

далее схема та же...

btw
сам я не пробовал получать имя процесса таким образом...

cb.
<programming> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach