Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выгрузка WinApi перехватчика [D7, WinXP]


Страницы:   1 2 3 4 5 6 7 8 9

KygECHuK ©   (2008-08-26 10:33:00) 

занимаюсь автоматизированным тестированием, оформил плагин для перехвата отрисовки текста. он подменяет адресса к функциям в таблице импорта, в моём случае это textOut в GDI32.dll. Всё работает хорошо, вот только что при выгрузке перхватчика с некоторойй вероятностью появлятся ошибка доступа к памяти...

Возможно кто нибудь занимался подомной проблематикой и может что нибудь посоветовать...


KygECHuK   (2008-08-28 09:38:00) [101]

Ну а выгрузка, получается, вызовом  UnhookWindowsHookEx ?

То есть, получатся, код библиотеки в при инциализации и финализации менять не надо?

И тело CallBack процедуры можно оставить пустым?


Сергей М.   (2008-08-28 08:18:00) [102]


> Как Заставить загружаться модуль?


Хук-модуль загрузит сама система при первом же возникновении того события,  которое ты укажешь в параметрах вызова SetWindowsHookex.


> как справоцировать получение управления


Обеспечить условия, при которых это событие гарантированно возникнет.
Например, "подписаться" на WH_GETMESSAGE и послать целевому окну WM_USER.
Как только целевая оконная ф-ция выберет любое сообщение из очереди, система немедленно загрузит твой хук-модуль, при этом отработает процедура инициализации, где ты волен выполнять модификацию IAT.


KygECHuK   (2008-08-27 21:41:00) [103]

А как справоцировать получение управления в таком случае? Как Заставить загружаться модуль? Я не в смысле что это не возможно... просто реально не знаю.


Сергей М.   (2008-08-27 20:46:00) [104]


> Что общего может иметь цепочка hook-точек и вызов TextOut
> из какой то библиотеки


Ничего общего.
Тебе оно и не надо.
Тебе надо получить управление при загрузке/выгрузке своего модуля в/из АП жертвы.
При получении управления при загрузке ты включаешь свой перехват, при получении управления при выгрузке ты выключаешь свой перехват.
Эту самую загрузку/выгрузку твоего модуля система выполнит самостоятельно,  с соблюдением канонов межпоточной синхронизации.


KygECHuK   (2008-08-27 20:17:00) [105]

*функцией DrawText


KygECHuK   (2008-08-27 20:16:00) [106]


> Почему ты для этой цели не пользуешь SetWindowsHookex ?

Как этот способ может мне помочь?
Вот листаю докуметнтацию:
"Функция SetWindowsHookEx устанавливает определяемую программой подключаемую процедуру в цепочку hook-точек."
Что общего может иметь цепочка hook-точек и вызов TextOut из какой то библиотеки хоть user32.dll функция DrawText


Сергей М.   (2008-08-27 19:55:00) [107]


> с каками параметрами должна вызваться SetWindowsHookEx,
> что бы переданная CallBack процедура срабатывала на вызов
> TextOut ?


Ни с какими.
В огороде бузина, а в Киеве дядька.

Мы пока еще говорим только о внедрении кода, а не о каких-то там колбэках и перехватах.

Ты его, свой код то бишь, нахрена внедряешь средствами CreateRemoteThread ?
Почему ты для этой цели не пользуешь SetWindowsHookex ?
Пока ты не прокомментируешь логику принятия своего решения, дальнейшее обсуждение темы и проблемы лишено резона.


KygECHuK   (2008-08-27 19:47:00) [108]


> Я пока говорю о методах внедрения кода в чужое АП, а не
> о каком-то там "перехвате".

Нет, постой паравоз, мне все равно интересно с каками параметрами должна вызваться SetWindowsHookEx, что бы переданная CallBack процедура срабатывала на вызов TextOut ? Вопрос вроде простой..


Сергей М.   (2008-08-27 19:32:00) [109]


> вроде работает.. ну почти.


А чем же ты тогда в этом топике озабочен ?)

Ну подумаешь - в основном работает, но маленько не работает - стоило ли волноваться ?) Нехай себе маленько глючит, глвное чтобы в целом немаленько неглючило)


Сергей М.   (2008-08-27 19:28:00) [110]


> допустим я использую  SetWindowsHookEx,  тогда какими будут
> праметры для перехвата TextOut'а?
>


Какие еще нафих "параметры перехвата" ?
В огороде бузина, а в Киеве дядька)


> не в курсе я был что  документированным и рекомендованным
> способом можно перехватывать определённые импортированиы
> функции


Ты вообще слышишь что я говорю ?

Я пока говорю о методах внедрения кода в чужое АП, а не о каком-то там "перехвате".

До "перехвата" в нашем с тобой разговоре еще как до Китая ползком на карачках)


KygECHuK   (2008-08-27 17:54:00) [111]

Ну допустим я использую  SetWindowsHookEx,  тогда какими будут праметры для перехвата TextOut'а?


KygECHuK   (2008-08-27 17:41:00) [112]

*давно и не правда..


KygECHuK   (2008-08-27 17:40:00) [113]


> Прокомментируй свою логику, если она вообще имеется, мне
> она пока не ясна ..

ай ай ай... А ктооо.... А кто это сделал? Ммммммммм...

Меня что предадут анафине? Ну допустим не в курсе я был что  документированным и рекомендованным способом можно перехватывать определённые импортированиы функции. SetWindowsHook использовал только для перехвата сообщений окна и то это было давно и недавно, не думаю что моё решение столь опасно... и к тому же вроде работает.. ну почти.. :)


Сергей М.   (2008-08-27 17:29:00) [114]


> казалось так все делают


Перекрестись на всякслучай, если православный)

За каким лешим, спрашивается, извращаться со стартом удаленного потока, если заведомо известно, что "жертва" является GUI-приложением и внедрение своего кода в его АП достигается документированным и рекомендованным способом, т.е. установкой ловушки при помощи SetWindowsHookEx ?

Прокомментируй свою логику, если она вообще имеется, мне она пока не ясна ..


KygECHuK   (2008-08-27 17:19:00) [115]

Раз так, тогда завтра предоставлю код
и попробую "Засуспензить" родные потки при выгрузке


KygECHuK   (2008-08-27 17:16:00) [116]


> А причем здесь тогда хук ?


hook - ловушка - те же яйца тока в профиль


> Ты чего мудришь-то ? В реанимацию метишь ?)


И не думал мутить - казалось так все делают.... :)


Сергей М.   (2008-08-27 17:04:00) [117]

Хук обычно "вставляют" так как прописал доктор БГ)

А доктор прописал вставлять через SetWindowsHookEx, а вынять, соотв-но, через UnhookWindowsHookEx.

Ты чего мудришь-то ? В реанимацию метишь ?)


Сергей М.   (2008-08-27 17:00:00) [118]


> я её так и всатвлял


А причем здесь тогда хук ?


KygECHuK   (2008-08-27 16:58:00) [119]


> Если ты влупил куда-то свой хук-модуль средствами SetWindowsHookEx,
>  то почему не "вылупить" его штатно, т.е. средствами UnhookWindowsHookEx
> ?

Потому что это свечка :))
я её так и всатвлял...


Сергей М.   (2008-08-27 16:52:00) [120]


> Вызывается поток CreateRemoteThread котоый заставляет выгрузится
> библиотеку


Не понял ..

Почему через сфинктер это тобой делается ?

Если ты влупил куда-то свой хук-модуль средствами SetWindowsHookEx, то почему не "вылупить" его штатно, т.е. средствами UnhookWindowsHookEx ?


Страницы:   1 2 3 4 5 6 7 8 9

Наверх

Титульная страница Поиск, карта сайта Написать письмо