Главная страница
    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.005 c
6-32527
Shadow77
2001-11-01 10:17
2002.03.11
Посылаем письмо из проги


7-32587
wHammer
2001-11-30 13:05
2002.03.11
Speaker


4-32608
Max_VM
2002-01-11 16:05
2002.03.11
Как записать в меню пункт с integer переменной?


3-32413
Vadim
2002-02-11 12:03
2002.03.11
Обновление поля PATH в иерархической таблице


3-32427
olkononov
2002-02-08 15:32
2002.03.11
bde сохраняет только последние данные!!!почему?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский