![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выгрузка WinApi перехватчика [D7, WinXP]
KygECHuK © (2008-08-26 10:33:00)
Страницы: < 1 2 3 4 5 6 7 8 9 >
занимаюсь автоматизированным тестированием, оформил плагин для перехвата отрисовки текста. он подменяет адресса к функциям в таблице импорта, в моём случае это 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 ?