-
Подскажите. Есть ли готовые решения.
Допустим. Запускаю какой-то файл, нужно до его запуска показать мне, что этот файл пытается запуститься.. даже если его запускает другое приложение по CreateProcess
-
Решения есть - антивирусы. Именно они реализуют данный функционал. Хук в самом простом случае ставить нужно на SDT и теневую SST на NtCreateProcessEx
-
да. это надо.
-
-
Что удалось найти. Возможно ли это переделать под 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
-
> sfary (21.08.10 10:53) [4] > Как поймать запускающийся процесс, и вывести его допустим > в messagebox или memo
А зачем, цель какая?
Вы наверное вирус пишите?
-
Пишу антивирус. На данный момент у меня определяет запуск процессов из разници кол-ва. по циклу. Сами понимаете, это неудобно. Для антивирусного монитора нужен хук.
Не спрашивайте зачем мне это надо, этот антивирус для конкретных целей.. как дополнение.
-
-
И кстати на заметку в Windows Vista и выше NtCreateProcess и NtCreateProcessEx вам не поможет, в этих ОС нужно перехватывать NtCreateUserProcess
-
Да, в курсе usermod надо, желательно простой apihook, в режиме ядра не требуется, с этим одни проблемы.. да и не требуется.
Размещу вашу рекламу в этот бесплатный проект.
-
-
-
i.websvc[hotdog]gmail.com
Игорь, рановато ставить, косяков много.
-
> sfary (21.08.10 11:40)
Ваш энтузиазм похвален но даже будь вы МД у вас уйдет на это месяцы, а то и годы...
Забейте у вас ничго не получиться
-
так я подобные проекты за 3 дня поднимаю, на массы. =)
с хуком было бы грамотнее.
-
аудит надо использовать, а не ерундой страдать.
-
> Игорь Шевченко © (22.08.10 18:27) [15]
Какой то довольно известный антивирус на этом принципе основан, ни каких хуков, забыл название
-
аудит не работает на компьютерах большинства людей, по умолчанию администратор. Можно конечно перевести человека под юзера с аудитом, но это так же не поможет выполниться шпионскому ПО.
-
> но это так же не поможет выполниться шпионскому ПО. >
:D не то.
Аудит не помешает шпионскому ПО, тем более всегда находились способы выбраться в нулевое кольцо. Процесс не стоит на месте, Rootkits/Bootkit последние практически не выгружаемы для антивирусов.
В любом случае, предотвратить какую-то часть от исполнения лучше, в моем случае (как мне кажется) не хилую.
Игорь взялся помочь нужным хорошим кодом, так как в действительности мне это не осилить. Постараюсь переписать с начала, минималистский апи интерфейс и оптимизированный код определения и дизасма для доп. анализа.
Проект в любом случае будет достаточно популярен, так как есть база для внедрения. Приму любую информацию касаемо темы.
-
|