Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2017.06.11;
Скачать: [xml.tar.bz2];

Вниз

Ловушка на запуск файлов. Hook на CreateProcess   Найти похожие ветки 

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

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

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


 
Rouse_ ©   (2010-08-21 01:34) [1]

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


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

да. это надо.


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


> sfary   (21.08.10 00:10)



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


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

Что удалось найти. Возможно ли это переделать под 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 11:02) [5]


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


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

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


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

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

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


 
sfary   (2010-08-21 11:14) [7]

http://slil.ru/29578798

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


 
Игорь ©   (2010-08-21 11:15) [8]

И кстати на заметку в Windows Vista и выше NtCreateProcess и NtCreateProcessEx вам не поможет, в этих ОС нужно перехватывать NtCreateUserProcess


 
sfary   (2010-08-21 11:22) [9]

Да, в курсе usermod надо, желательно простой apihook, в режиме ядра не требуется, с этим одни проблемы.. да и не требуется.

Размещу вашу рекламу в этот бесплатный проект.


 
Игорь ©   (2010-08-21 11:36) [10]


> sfary   (21.08.10 11:14) [7]
> http://slil.ru/29578798



> не требует подключения к интернету, не требует обновления


Я уже хочу поставить себе

Вы озвучте $ и мы всем форумом вам напишем HOOK CrateProcess по типу  вот этого http://delphisources.ru/pages/sources/system/2010-year/process-protector.html исходника который я написал в радостном угаре ничего не зная о програмирование драйверов, надеюсь меня не сильно будут бить за все BSOD которые он вызвал


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

http://delphisources.ru/pages/sources/system/2010-year/process-protector.html

хотел применить это к блокированию системных файлов от внедрения writememory но затем понял, что это нарушит работу windows =)

проект бесплатный, так что с него ничего не поиметь. только могу разместить вашу рекламу.


 
sfary   (2010-08-21 11:44) [12]

i.websvc[hotdog]gmail.com

Игорь, рановато ставить, косяков много.


 
Игорь ©   (2010-08-21 11:49) [13]


> sfary   (21.08.10 11:40)


Ваш энтузиазм похвален но даже будь вы МД у вас уйдет на это месяцы, а то и годы...

Забейте у вас ничго не получиться


 
sfary   (2010-08-21 11:58) [14]

так я подобные проекты за 3 дня поднимаю, на массы. =)

с хуком было бы грамотнее.


 
Игорь Шевченко ©   (2010-08-22 18:27) [15]

аудит надо использовать, а не ерундой страдать.


 
Игорь ©   (2010-08-22 22:35) [16]


> Игорь Шевченко ©   (22.08.10 18:27) [15]


Какой то довольно известный антивирус на этом принципе основан, ни каких хуков, забыл название


 
sfary   (2010-08-24 00:51) [17]

аудит не работает на компьютерах большинства людей, по умолчанию администратор. Можно конечно перевести человека под юзера с аудитом, но это так же не поможет выполниться шпионскому ПО.


 
sfary   (2010-08-24 01:16) [18]


> но это так же не поможет выполниться шпионскому ПО.
>

:D не то.

Аудит не помешает шпионскому ПО, тем более всегда находились способы выбраться в нулевое кольцо. Процесс не стоит на месте, Rootkits/Bootkit
последние практически не выгружаемы для антивирусов.

В любом случае, предотвратить какую-то часть от исполнения лучше, в моем случае (как мне кажется) не хилую.

Игорь взялся помочь нужным хорошим кодом, так как в действительности мне это не осилить. Постараюсь переписать с начала, минималистский апи интерфейс и оптимизированный код определения и дизасма для доп. анализа.

Проект в любом случае будет достаточно популярен, так как есть база для внедрения. Приму любую информацию касаемо темы.


 
Сергей М. ©   (2010-08-24 09:53) [19]


> Приму любую информацию касаемо темы


http://www.google.com/search?hl=ru&client=firefox&hs=KQS&rls=org.mozilla%3Aru%3Aofficial&q=pssetcreateprocessnotifyroutine+msdn&aq=1&aqi=g3&aql=&oq=pssetcreateprocessnoti&gs_rfai=


 
Игорь ©   (2010-08-24 12:32) [20]


> sfary


Перехват PsSetCreateProcessNotifyRoutine, пока есть проблемка, не могу получить полный путь запускаемого процесса, из usermode не получаеться, надо получать в драйвере, доработаю позже, щас занет пока, под x64 драйвер подписан, надо только отключить проверку цифровой подписи F8

http://www.onlinedisk.ru/file/501133/


 
Игорь ©   (2010-08-24 12:47) [21]

Тестировал под Windows XP SP2, Seven, x64 Seven


 
Сергей М. ©   (2010-08-24 13:41) [22]


> Игорь ©   (24.08.10 12:32) [20]
> Перехват PsSetCreateProcessNotifyRoutine


Нафига его перехватывать-то ?


 
Игорь ©   (2010-08-24 14:25) [23]


> Сергей М. ©   (24.08.10 13:41) [22]


Да это я так образно


 
Сергей М. ©   (2010-08-24 15:54) [24]


> Игорь ©   (24.08.10 14:25) [23]


Даже если "образно", то как это поможет цели - "еще до запуска" ?
Никак.
Вот в Висте и 2008-м сервере - там появилась PsSetCreateProcessNotifyRoutineEx, она реально поможет.


 
Игорь ©   (2010-08-24 16:14) [25]


> Сергей М. ©   (24.08.10 15:54) [24]


Процесс еще не инициализировался, не загрузил ни одну dll, что он может?

А мы можем спокойно его замочить если он нам не понравился чем либо


 
sfary   (2010-08-25 19:41) [26]

Возможно ли определить, что процесс полностью инициализировался (только с windows dll) после чего поставить его на паузу. Если функция определения на его вирусность дала добро, то его выгружаем, в противном случае убираем с паузы. На данный момент это требуется. Сильно драйвера не требуются, ошибок много будет и лёгкость утеряется.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2017.06.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.002 c
15-1462732945
Inovet
2016-05-08 21:42
2017.06.11
Вот и 9 Мая!


3-1313671934
reekoxela
2011-08-18 16:52
2017.06.11
Как оповестить клиентов СУБД об изменении данных?


2-1443631313
Валя
2015-09-30 19:41
2017.06.11
доступ до БД Oracle


2-1443123555
Gedevan
2015-09-24 22:39
2017.06.11
Как у класса наследника явным образом показать методы родителя


2-1443529753
alvlts1
2015-09-29 15:29
2017.06.11
Вопрос про точки останова.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский