Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ловушка на запуск файлов. Hook на CreateProcess


Страницы:   1 2

sfary ©   (2010-08-21 00:10:00) 

Подскажите. Есть ли готовые решения.

Допустим. Запускаю какой-то файл, нужно до его запуска показать мне, что этот файл пытается запуститься.. даже если его запускает другое приложение по CreateProcess


sfary   (2010-08-21 11:11:00) [21]

Пишу антивирус. На данный момент у меня определяет запуск процессов из разници кол-ва. по циклу. Сами понимаете, это неудобно. Для антивирусного монитора нужен хук.

Не спрашивайте зачем мне это надо, этот антивирус для конкретных целей.. как дополнение.


Игорь   (2010-08-21 11:02:00) [22]


> sfary   (21.08.10 10:53) [4]
> Как поймать запускающийся процесс, и вывести его допустим
> в messagebox или memo


А зачем, цель какая?

Вы наверное вирус пишите?


sfary   (2010-08-21 10:53:00) [23]

Что удалось найти. Возможно ли это переделать под CreateProcess


program aHookProc;

uses
 Windows,
 advApiHook;
 
var
TrueMessageBoxA: function(hWnd: HWND; lpText, lpCaption:
                         PAnsiChar; uType: UINT): Integer; stdcall;

function NewMessageBoxA(hWnd: HWND; lpText, lpCaption:
                       PAnsiChar; uType: UINT): Integer; stdcall;
begin
 TrueMessageBoxA(0, 'Перехват установлен!', 'HookProc', 0);
end;

begin
 MessageBoxA(0, 'Новый метод API перехвата.', 'HookProc', 0);

 HookProc('user32.dll', 'MessageBoxA', @NewMessageBoxA, @TrueMessageBoxA);

 MessageBoxA(0, 'Не работает!', 'HookProc', 0);

 UnhookCode(@TrueMessageBoxA);
 
 MessageBoxA(0, 'Перехват снят.', 'HookProc', 0);
end.


И конкретно по WindowsSDK CreateProcess \ но собрать не получилось.
http://www.vba90.com/post/vb17/vb17967.htm

для редактирования первого примера понадобится второй.
type
     TCreateProcess   =   function(lpApplicationName:   PChar;   lpCommandLine:   PChar;
           lpProcessAttributes,   lpThreadAttributes:   PSecurityAttributes;
           bInheritHandles:   BOOL;   dwCreationFlags:   DWORD;   lpEnvironment:   Pointer;
           lpCurrentDirectory:   PChar;   const   lpStartupInfo:   TStartupInfo;
           var   lpProcessInformation:   TProcessInformation):   BOOL;   stdcall;
     TCreateProcessA   =   function(lpApplicationName:   PAnsiChar;   lpCommandLine:   PAnsiChar;
           lpProcessAttributes,   lpThreadAttributes:   PSecurityAttributes;
           bInheritHandles:   BOOL;   dwCreationFlags:   DWORD;   lpEnvironment:   Pointer;
           lpCurrentDirectory:   PAnsiChar;   const   lpStartupInfo:   TStartupInfo;
           var   lpProcessInformation:   TProcessInformation):   BOOL;   stdcall;
     TCreateProcessW   =   function(lpApplicationName:   PWideChar;   lpCommandLine:   PWideChar;
           lpProcessAttributes,   lpThreadAttributes:   PSecurityAttributes;
           bInheritHandles:   BOOL;   dwCreationFlags:   DWORD;   lpEnvironment:   Pointer;
           lpCurrentDirectory:   PWideChar;   const   lpStartupInfo:   TStartupInfo;
           var   lpProcessInformation:   TProcessInformation):   BOOL;   stdcall;


Как поймать запускающийся процесс, и вывести его допустим в messagebox или memo


Игорь   (2010-08-21 10:03:00) [24]


> sfary   (21.08.10 00:10)



madCodeHook в usermod'е, а kernelmode SDT в сети полно примеров скачай WDK http://club.shelek.ru/viewfiles.php?id=2и флаг в руки


sfary   (2010-08-21 09:42:00) [25]

да. это надо.


Rouse_   (2010-08-21 01:34:00) [26]

Решения есть - антивирусы. Именно они реализуют данный функционал.
Хук в самом простом случае ставить нужно на SDT и теневую SST на NtCreateProcessEx


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо