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




Вниз

Отловить момент запуска 


Maximkha   (2002-01-08 16:14) [0]

Привет Всем!

Не подскажет ли кто как отлавливать момент запуска приложений в Windows ?


Заранее спасибо.



Vovchik   (2002-01-08 16:38) [1]

Посмотри хелп на SetWindowsHookEx. Н-да, наверное, скоро всех мутить будет от этих хуков...



Burmistroff   (2002-01-08 23:54) [2]

Ну пожалуйста, подскажите хоть на какое событие хук ставить?
>Vovchik 7 бед один ответ. Но можно хоть капельку поконкретнее? ;)



Burmistroff (!)   (2002-01-09 13:56) [3]

Товарищи, ну пожалуйста не оставайтесь в стороне от данной проблемы.



Vovchik   (2002-01-09 14:39) [4]

А я не остаюсь в стороне. Я ссорюсь Юрием Зотовым. Он очень умный и он специалист по хукам. Может, он чего скажет?

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

ЗЫ: почитай SDK, если у тебя есть оно.



Юрий Зотов   (2002-01-09 14:56) [5]

> Maximkha (08.01.02 16:14)

Если создается хотя бы одно окно (пусть даже и невидимое или пусть даже это окно - кнопка на тулбаре), то действительно поможет хук. Правда, если говорить строго, то отлавливать он будет не момент запуска приложения, а момент создания окна.

Если же не создается вообще никаких окон, то нужен перехват CreateProcess. Как это делается, описано в 4-м издании книги Рихтера, но сразу скажу, что дело это непростое. Советую также посмотреть статью Ketmar"а на этом сайте.



Burmistroff   (2002-01-09 21:45) [6]

>Юрий Зотов
кстати, насчет статьи Ketmar"a: вы не знаете случайно что из себя представляет функция "WriteInt3"?



Юрий Зотов   (2002-01-09 21:57) [7]

Нет, не знаю. В MSDN (июль 2001) такой тоже нет, только что посмотрел. Видимо, этот вопрос - к Ketmar"у.



paul_shmakov   (2002-01-12 00:15) [8]

отвечу вместо Ketmar"а :)
функция WriteInt3 записывает по указанному адресу инстукцию int 3 (занимает 1 байт со значением $CC) и возвращает старое значение. int 3 - это команда, генерирующая прерывание с номером 3, которое предназначено для вызова отладчика. именно так и устанавливаются breakpoint-ы в отлаживаемых программах. обнаружив 3-е прерывание система генерирует прерывание EXCEPTION_BREAKPOINT, которое и перехватывает отладчик. при обработке этого события отладчик должен восстановить исходный байт, чтобы позволить программе выполняться дальше.
ну а текст функции может быть примерно таким:

function WriteInt3(hProcess: THandle; const Address: Pointer): Byte;
var
dwDummy: DWord;
Int3: Byte;
begin
ReadProcessMemory(hProcess, Address, @Result, SizeOf(Byte), dwDummy);
Int3 := $CC;
VirtualProtectEx(hProcess, Address, SizeOf(Int3), PAGE_EXECUTE_READWRITE, dwDummy);
WriteProcessMemory(hProcess, Address, @Int3, SizeOf(Int3), dwDummy);
end;




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




Наверх





Память: 0.73 MB
Время: 0.016 c
4-32602           Igor_thief            2002-01-10 23:52  2002.03.11  
Wallpapers!!!!!!!!!!!!!!!!!!!!!!!!!!!


14-32554          Shuler                2002-01-26 20:07  2002.03.11  
Разомнёмся!


14-32542          kaif                  2002-01-24 03:59  2002.03.11  
SHIFT+DELETE мои апплодисменты!!


14-32555          RUS1                  2002-01-25 14:47  2002.03.11  
Братья нужен простенький инсталятор на Delphi с исходными текстами!!


7-32595           Bob5                  2001-12-04 07:52  2002.03.11  
Помогите пожалуйста!