Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 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;



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

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

Наверх





Память: 0.46 MB
Время: 0.004 c
14-32563
Егор
2002-01-18 08:51
2002.03.11
Microsoft Agent


1-32462
kirill2000
2002-02-23 15:16
2002.03.11
Подстановка


1-32431
evgen_2001
2002-02-22 08:52
2002.03.11
Delphi & Kylix


1-32512
Виталий_2002
2002-02-25 11:01
2002.03.11
Обработчик KeyPress


14-32554
Shuler
2002-01-26 20:07
2002.03.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский