Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отследить запуск нового процесса? 
:(
    Опции темы
Riply
Дата 6.5.2009, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(COOLHack @  6.5.2009,  00:39 Найти цитируемый пост)
А как делается тоже самое, но из драйвера? я так понимаю обычное копирование кода тут не прокатит/// 


Нет, "не прокатит".  Даже вызов простейшей ф-ии типа Move (с валидными параметрами),
приведет к BSOD.

Ты не замораживай его, а для начала попробуй записывать в лог когда кто создан или уничтожен.
И не только ID, созданного, но и его имя.
Когда это будет получаться, можно будет подумать и о других действиях.
PM MAIL   Вверх
COOLHack
Дата 6.5.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 281
Регистрация: 8.2.2008

Репутация: -1
Всего: 0



Цитата

4. Где-то, например при загрузке драйвера, вызываем
   PsSetCreateProcessNotifyRoutine(CreateProcessNotyfy, False),
   соответственно при выгрузке PsSetCreateProcessNotifyRoutine(CreateProcessNotyfy, True);

Когда это делаю у меня не компилируется. 
Код

function DriverEntry;
var
 Status        : NTSTATUS;
 DeviceObject  : PDEVICE_OBJECT;
 uniDosString  : UNICODE_STRING;
 uniNameString : UNICODE_STRING;
begin
PsSetCreateProcessNotifyRoutine(CreateProcessNotyfy, False); //1

ну и 
Код

procedure ADriverUnload(const DriverObject : PDRIVER_OBJECT); stdcall;
var
 uniDosString  : UNICODE_STRING;
begin
 PsSetCreateProcessNotifyRoutine(CreateProcessNotyfy, True); //2

и это ещё (без 2-х строк выше норм компилируется)
Код

procedure CreateProcessNotyfy(const ParentId: THANDLE; const ProcessId: THANDLE; IsCreate: BOOLEAN); stdcall;
var
 RetStatus: NTSTATUS;
begin
 if IsCreate then
  begin

  end
 else begin

end;
end;


Я так понял 
Код

WriteLog('...')
 и есть запись в лог?

Это сообщение отредактировал(а) COOLHack - 6.5.2009, 22:58
PM MAIL   Вверх
Riply
Дата 6.5.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(COOLHack @  6.5.2009,  21:36 Найти цитируемый пост)
Когда это делаю у меня не компилируется. 


Показывай, как и где ты ее декларировал.

P.S.
 Настоятельно рекомендую прислушаться к совету, который я тебе уже давала:

Цитата(Riply @  6.5.2009,  00:04 Найти цитируемый пост)
бросай работу с драйвером, и садись за хорошие книжки по программированию и основам программирования.
 Попробуй написать какую-нибудь программу сам (а не скопи-пастить код).


PM MAIL   Вверх
COOLHack
Дата 7.5.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 281
Регистрация: 8.2.2008

Репутация: -1
Всего: 0



а как правельно декларировать её? в статье ссылка на которую  в первом посте я не нашол этой инфы
PM MAIL   Вверх
Riply
Дата 7.5.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(COOLHack @  7.5.2009,  14:33 Найти цитируемый пост)
а как правельно декларировать её? в статье ссылка на которую  в первом посте я не нашол этой инфы 


Таак.
Давай "расставим точки над i"
1.  Я спросила: "Показывай, как и где ты ее декларировал".
     Это означает, что тебе надо привести свой вариант декларации, пусть с ошибками.
     Тогда я смогу обяснить в чем их (ошибок) суть, иначе я бессильна тебе помочь.
2.  "Меня терзают смутные сомнения" (с), что ты вообще ее не декларировал.
      В этом случае, ты не владеешь элементарными азами и тебе рано не то что
      заниматься разработкой драйверов, но даже просто работать с API.
3.   По ссылке есть вся необходимая информация и по декларации и по многому другому.
      Если ты поленился это изучить и разобраться, то я просто "умываю руки".
      Если же чесно, пытался, но не смог, то возвращаемся к исходной точке: 
        у тебя серьезные пробелы в азах программирования.
      В любом из этих двух вариантов, дальнейшее обсуждение способов перехвата бессмысленно.


 
PM MAIL   Вверх
COOLHack
Дата 7.5.2009, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 281
Регистрация: 8.2.2008

Репутация: -1
Всего: 0



Цитата

Я спросила: "Показывай, как и где ты ее декларировал".

Код

function PsSetCreateProcessNotifyRoutine(const NotifyRoutine: PCREATE_PROCESS_NOTIFY_ROUTINE; const Remove: BOOLEAN): NTSTATUS; stdcall; external 'ntoskrnl.lib' name '_PsSetCreateProcessNotifyRoutine@8';


Пытался делать перед 
Код

implementation

{$I BCORE.INC}
{$I MYDRV.INC}
 


Это сообщение отредактировал(а) COOLHack - 7.5.2009, 17:10
PM MAIL   Вверх
Riply
Дата 7.5.2009, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



COOLHack, сама декларация, вроде, правильная. Место, в принципе, тоже сгодится.

Теперь, во всей своей красе, начинаются прелести различий "версий" DDK, о которых я говорила раньше smile

В твоей DDK описан тип PCREATE_PROCESS_NOTIFY_ROUTINE ?
Если нет, то его надо описать вручную, иначе получаем ошибку недекларированного идентификатора.





PM MAIL   Вверх
COOLHack
Дата 7.5.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 281
Регистрация: 8.2.2008

Репутация: -1
Всего: 0



Это надо искать в файле NTDDK.INC? если там то нету, но в ntddk.h нашол такие строки: 
Код

typedef
VOID
(*PCREATE_PROCESS_NOTIFY_ROUTINE)(
    IN HANDLE ParentId,
    IN HANDLE ProcessId,
    IN BOOLEAN Create
    );

NTSTATUS
PsSetCreateProcessNotifyRoutine(
    IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
    IN BOOLEAN Remove
    );



Это сообщение отредактировал(а) COOLHack - 7.5.2009, 23:31
PM MAIL   Вверх
Riply
Дата 7.5.2009, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(COOLHack @  7.5.2009,  23:24 Найти цитируемый пост)
Это надо искать в файле NTDDK.INC? если там то нету, но в ntddk.h нашол такие строки: 


Теперь переводим эти строки (не все, а только нужные) на русский... ой! тьфу !  на Delphi smile
и добавляем в свой проект.
PM MAIL   Вверх
COOLHack
Дата 7.5.2009, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 281
Регистрация: 8.2.2008

Репутация: -1
Всего: 0



Похоже с переводом проблемы, я так понял нужна верхня часть? 
сделал так: 
Код

procedure PCREATE_PROCESS_NOTIFY_ROUTINE(const ParentId:HANDLE, const ProcessId:HANDLE, const Create:BOOLEAN);

но не компилируется в этом случае. Данный код ставил выше декларирования(его пробывал коментировать, результат не изменился)
PM MAIL   Вверх
Riply
Дата 8.5.2009, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(COOLHack @  7.5.2009,  23:51 Найти цитируемый пост)
Похоже с переводом проблемы 


Без умения переводить мы никуда не уедем.

Цитата(COOLHack @  7.5.2009,  23:51 Найти цитируемый пост)
я так понял нужна верхня часть? 


Да. Нужно описание типа.

Цитата(COOLHack @  7.5.2009,  23:51 Найти цитируемый пост)
сделал так: 


А что сделал ты ? 
В смысле что ты хотел описать,  ибо то что ты написал - мягко говоря, "бред сивой кобылы" smile

PM MAIL   Вверх
COOLHack
Дата 8.5.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 281
Регистрация: 8.2.2008

Репутация: -1
Всего: 0



Код

typedef
VOID
(*PCREATE_PROCESS_NOTIFY_ROUTINE)(
    IN HANDLE ParentId,
    IN HANDLE ProcessId,
    IN BOOLEAN Create
    );

и есть то самое описание?
Но в этом случае как его правельно перевести? Или где найти информацию о том как правельно перевести ? 
PM MAIL   Вверх
Riply
Дата 8.5.2009, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(COOLHack @  8.5.2009,  00:23 Найти цитируемый пост)
и есть то самое описание?


Угу

Цитата(COOLHack @  8.5.2009,  00:23 Найти цитируемый пост)
Но в этом случае как его правельно перевести?


IMHO, единственный способ перевода это:
1. понять что, зачем и почему написано
2. написать "понятое" на Delphi

Других способов я не знаю smile
PM MAIL   Вверх
COOLHack
Дата 8.5.2009, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 281
Регистрация: 8.2.2008

Репутация: -1
Всего: 0



не вкурю как нужно делать, можешь пояснить? smile
PM MAIL   Вверх
Riply
Дата 8.5.2009, 03:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(COOLHack @  8.5.2009,  01:35 Найти цитируемый пост)
не вкурю как нужно делать, можешь пояснить?


Написать перевод, я конечно могу. Только проку от этого никакого не будет.
Тебе придеся переводить очень(!) много всяких структур и еще черта в ступе smile
Ведь не будешь же ты бегать на форум с каждой из них
и протянутой рукой что-бы кто-то ее перевел тебе.
Поэтому давай сразу учится переводить самостоятельно.
Поверь мне, без этого умения ты и шагу не сделаешь.
Уж не говоря о том, что все примеры в MSDN не на Delphi писаны smile

Показывай варианты перевода, пусть с ошибками - тебе помогут. 
Это не так сложно как кажется smile
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.