![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ловушка на запуск файлов. Hook на CreateProcess
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