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-27 16:45:00) [121]


> "Выгрузка перехватчика" в какой момент и при каких условиях
> у тебя осуществляется ?


Когда партия прикажет, т. е. влюбой момент времени когда понадобиться
Без каких либо условий...

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


> Давай уже иллюстрируй фрагментами реального кода, имеющего
> непосредственное отношение к делу, если не можешь изъясняться
> терминологически правильно)


Ну да? нет у меня специального образования....
Сейчас фрагмент предоставить не могу - уже дома, поэтому завтра.
Да и кокнретный участок кода выявить не могу в дебаге все проходит идеально.


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


> Нет это перехват сообщений


Причем здесь он ?

Я прекрасно понимаю, что он тебе нафих не нужен.


> подмены адресов функций IAT


И это прекрасно понимаю, повторяться про это нет повода.

"Выгрузка перехватчика" в какой момент и при каких условиях у тебя осуществляется ?

Давай уже иллюстрируй фрагментами реального кода, имеющего непосредственное отношение к делу, если не можешь изъясняться терминологически правильно)


KygECHuK   (2008-08-27 16:18:00) [123]


> Т.е. ты вызываешь UnhookWindowsHookEx и в этот же момент
> получаешь AV ?


Нет это перехват сообщений. у мну реализован перехват на уровне подмены адресов функций IAT


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


> но.. ошибка..


Т.е. ты вызываешь UnhookWindowsHookEx и в этот же момент получаешь AV ?
А по какому адресу ?


KygECHuK   (2008-08-27 15:57:00) [125]


> Тебя ж про какие-то плагины понесло, которые, оказывается,
>  к делу отношения не имеют)Да и метод установки хука для
> решения задачи "насильственного" внедрения вовсе не единственный.
>


я плохо выражаю свои мысли, ибо сам в них путаюсь )


> Но раз не глобальный, то значит ты указывал конкретный целевой
> тред для ассоциации с хуком. В этом потоке твой хук-модуль
> и будет загружен в АП "жертвы", в этом же потоке будет вызываться
> указанная тобой при установке хук-функция.


Вот это я все зделал, но.. ошибка...


Сергей М.   (2008-08-27 15:36:00) [126]


> вот только он не глобальный


А по барабану какой.

Но раз не глобальный, то значит ты указывал конкретный целевой тред для ассоциации с хуком. В этом потоке твой хук-модуль и будет загружен в АП "жертвы", в этом же потоке будет вызываться указанная тобой при установке хук-функция.


> думал это с самого начала понятно


С чего бы вдруг ?

Тебя ж про какие-то плагины понесло, которые, оказывается, к делу отношения не имеют)
Да и метод установки хука для решения задачи "насильственного" внедрения вовсе не единственный.


KygECHuK   (2008-08-27 15:09:00) [127]

Мне даже Rouse_ по теме отписывался...


KygECHuK   (2008-08-27 15:08:00) [128]


> Картина правильно нарисована ?)

ну собственно говоря.. да.. вот только он не глобальный.

а я думал это с самого начала понятно?


Сергей М.   (2008-08-27 14:36:00) [129]


> как исчо WinApi хукделают?


Наконец-то на 47-м (!!) посте прозвучало ключевоеслово во всей этой бодяге)

Т.е. слово "плагин" можно смело бросить фтопку, оно тут вообще ни с какого боку, как и ТестКомплит с АИС'ом, ибо речь, оказывается, идет просто о глобальном хуке как одном из методов внедрения своего кода в АП процесса-"жертвы".

Итак, ты сотворяешь в Делфи некую dll, которая, кроме всего прочего, реализует функциональность хук-модуля для его внедрения в АП процесса некоего дельфийского приложения, исходники которого недоступны, с целью перехвата вызовов в контексте потоков этого процесса неких API-функций, например, TextOut.

Картина правильно нарисована ?)


KygECHuK   (2008-08-27 14:18:00) [130]


> Все чудесатее и чудесатее становится)


Конечно я ж хто?


> Каким образом твой плагин, будучи загруженный в АП ТестКомплита,
>  умудряется перехватывать вызовы ф-ций в АП совсем другого
> процесса, т.е. процесса АИС ?

Ну да, всё так....
Совсем другого процесса.. А как исчо WinApi хук делают?


Сергей М.   (2008-08-27 14:03:00) [131]


> я перехватываю вывод АИС в опредлённой области


Все чудесатее и чудесатее становится)

Каким образом твой плагин, будучи загруженный в АП ТестКомплита, умудряется перехватывать вызовы ф-ций в АП совсем другогопроцесса, т.е. процесса АИС ?


KygECHuK   (2008-08-27 13:54:00) [132]

Вот я перехватываю вывод АИС в опредлённой области


KygECHuK   (2008-08-27 13:51:00) [133]

Базе данных


KygECHuK   (2008-08-27 13:49:00) [134]


> Т.е. задача твоего плагина - перехватить данные, выводимые
> ТестКомплитом в некие контролы с пом. ф-ции TextOut, поскольку
> получить эти данные у ТестКомплита каким-либо иным легальным
> способом якобы не представляется возможным ?

Ключевое слово сдесь "якобы" ?

Постойте... сечас соберусь.. знаю что не умею объяснять...

TestComplete основан на движке Java. Он прогоняет срипты в которых и содержиться сама логика теста. Он снабжен оч. большим арсеналом инструментария. Не хватет только функциональности моего плагина.

АИС это  продукт разрабатываемый нашей компании уже 10 лет (хотя он мало с того времени изменился :) ). Она обладает стандартным набором:
Ввод данных предметной области, передача их между организациями, и формировании отчетности.  Моя задача написать срипты которые отслеживали идентичность этих данных в любой из этих операций.

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


Сергей М.   (2008-08-27 12:58:00) [135]

Т.е. задача твоего плагина - перехватить данные, выводимые ТестКомплитом в некие контролы с пом. ф-ции TextOut, поскольку получить эти данные у ТестКомплита каким-либо иным легальнымспособом якобы не представляется возможным ?


KygECHuK   (2008-08-27 12:38:00) [136]


> Дельфийское ? Без исходников ?

да без них самих Зовут TestComplete "внутренний" в смысле не для клиентов


Сергей М.   (2008-08-27 12:14:00) [137]


> тестор чисто внутренний проект


Дельфийское ? Без исходников ?


KygECHuK   (2008-08-27 11:47:00) [138]


> Так а зачем же нужно перехватывать TextOut в процессе системы
> тестирования ? Не понимаю ..


Приходится его немного "сломать" не сисетму же распознования писать?
Ведь данные предоставляемые АИС во время тестирования влияют на его ход.


> Я так понял, что интерфейсе приложения АИС, а не интерфейсе
> приложения-тестера, которое грузит твой плагин ..

да именно, так, приложение - тестор чисто внутренний проект

Интерфейсное приложение - красиво звучит для этой АИС оно все вместе и в одном исполняемом файле.... весит до 60 mb.


Сергей М.   (2008-08-27 11:35:00) [139]


> для системы тестирования АИС черный ящик


Так а зачем же нужно перехватывать TextOut в процессе системы тестирования? Не понимаю ..


> жалоб и замечаний именно на отображении данных в интерфейсе


Я так понял, что интерфейсе приложения АИС, а не интерфейсе приложения-тестера, которое грузит твой плагин ..


KygECHuK   (2008-08-27 11:21:00) [140]


> А как связан процесс этой системы тестирования с процессом
> АИС ?


Опосредованно - симулирует сообщения от лица пользователя. т. е. для системы тестирования АИС черный ящик... с одной стороны очень сложно симулировать пользователя, а с другой можно находить концептуальные ошибки и создовать наиболее ёмкие тесты.


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

Наверх

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