-
> тестор чисто внутренний проект
Дельфийское ? Без исходников ?
-
> Дельфийское ? Без исходников ?
да без них самих Зовут TestComplete "внутренний" в смысле не для клиентов
-
Т.е. задача твоего плагина - перехватить данные, выводимые ТестКомплитом в некие контролы с пом. ф-ции TextOut, поскольку получить эти данные у ТестКомплита каким-либо иным легальным способом якобы не представляется возможным ?
-
> Т.е. задача твоего плагина - перехватить данные, выводимые
> ТестКомплитом в некие контролы с пом. ф-ции TextOut, поскольку
> получить эти данные у ТестКомплита каким-либо иным легальным
> способом якобы не представляется возможным ?
Ключевое слово сдесь "якобы" ?
Постойте... сечас соберусь.. знаю что не умею объяснять...
TestComplete основан на движке Java. Он прогоняет срипты в которых и содержиться сама логика теста. Он снабжен оч. большим арсеналом инструментария. Не хватет только функциональности моего плагина.
АИС это продукт разрабатываемый нашей компании уже 10 лет (хотя он мало с того времени изменился :) ). Она обладает стандартным набором:
Ввод данных предметной области, передача их между организациями, и формировании отчетности. Моя задача написать срипты которые отслеживали идентичность этих данных в любой из этих операций.
Поэтому следует учесть всевозможные способы вывода информации для сравнения её с ранее введённой. одним из таких спообов вывода и является интерфейс.
Так, в любой момент времени мне могут понадобиться данны из интерфейса вводились они ранее имелись ли они в
-
Базе данных
-
Вот я перехватываю вывод АИС в опредлённой области
-
> я перехватываю вывод АИС в опредлённой области
Все чудесатее и чудесатее становится)
Каким образом твой плагин, будучи загруженный в АП ТестКомплита, умудряется перехватывать вызовы ф-ций в АП совсем другого процесса, т.е. процесса АИС ?
-
> Все чудесатее и чудесатее становится)
Конечно я ж хто?
> Каким образом твой плагин, будучи загруженный в АП ТестКомплита,
> умудряется перехватывать вызовы ф-ций в АП совсем другого
> процесса, т.е. процесса АИС ?
Ну да, всё так....
Совсем другого процесса.. А как исчо WinApi хук делают?
-
> как исчо WinApi хук делают?
Наконец-то на 47-м (!!) посте прозвучало ключевое слово во всей этой бодяге)
Т.е. слово "плагин" можно смело бросить фтопку, оно тут вообще ни с какого боку, как и ТестКомплит с АИС'ом, ибо речь, оказывается, идет просто о глобальном хуке как одном из методов внедрения своего кода в АП процесса-"жертвы".
Итак, ты сотворяешь в Делфи некую dll, которая, кроме всего прочего, реализует функциональность хук-модуля для его внедрения в АП процесса некоего дельфийского приложения, исходники которого недоступны, с целью перехвата вызовов в контексте потоков этого процесса неких API-функций, например, TextOut.
Картина правильно нарисована ?)
-
> Картина правильно нарисована ?)
ну собственно говоря.. да.. вот только он не глобальный.
а я думал это с самого начала понятно?
-
Мне даже Rouse_ по теме отписывался...
-
> вот только он не глобальный
А по барабану какой.
Но раз не глобальный, то значит ты указывал конкретный целевой тред для ассоциации с хуком. В этом потоке твой хук-модуль и будет загружен в АП "жертвы", в этом же потоке будет вызываться указанная тобой при установке хук-функция.
> думал это с самого начала понятно
С чего бы вдруг ?
Тебя ж про какие-то плагины понесло, которые, оказывается, к делу отношения не имеют)
Да и метод установки хука для решения задачи "насильственного" внедрения вовсе не единственный.
-
> Тебя ж про какие-то плагины понесло, которые, оказывается,
> к делу отношения не имеют)Да и метод установки хука для
> решения задачи "насильственного" внедрения вовсе не единственный.
>
я плохо выражаю свои мысли, ибо сам в них путаюсь )
> Но раз не глобальный, то значит ты указывал конкретный целевой
> тред для ассоциации с хуком. В этом потоке твой хук-модуль
> и будет загружен в АП "жертвы", в этом же потоке будет вызываться
> указанная тобой при установке хук-функция.
Вот это я все зделал, но.. ошибка...
-
> но.. ошибка..
Т.е. ты вызываешь UnhookWindowsHookEx и в этот же момент получаешь AV ?
А по какому адресу ?
-
> Т.е. ты вызываешь UnhookWindowsHookEx и в этот же момент
> получаешь AV ?
Нет это перехват сообщений. у мну реализован перехват на уровне подмены адресов функций IAT
-
> Нет это перехват сообщений
Причем здесь он ?
Я прекрасно понимаю, что он тебе нафих не нужен.
> подмены адресов функций IAT
И это прекрасно понимаю, повторяться про это нет повода.
"Выгрузка перехватчика" в какой момент и при каких условиях у тебя осуществляется ?
Давай уже иллюстрируй фрагментами реального кода, имеющего непосредственное отношение к делу, если не можешь изъясняться терминологически правильно)
-
> "Выгрузка перехватчика" в какой момент и при каких условиях
> у тебя осуществляется ?
Когда партия прикажет, т. е. влюбой момент времени когда понадобиться
Без каких либо условий...
Вызывается поток CreateRemoteThread котоый заставляет выгрузится библиотеку. на что она реагирует обратной заменой всех адрессов и выгружается.
> Давай уже иллюстрируй фрагментами реального кода, имеющего
> непосредственное отношение к делу, если не можешь изъясняться
> терминологически правильно)
Ну да? нет у меня специального образования....
Сейчас фрагмент предоставить не могу - уже дома, поэтому завтра.
Да и кокнретный участок кода выявить не могу в дебаге все проходит идеально.
-
> Вызывается поток CreateRemoteThread котоый заставляет выгрузится
> библиотеку
Не понял ..
Почему через сфинктер это тобой делается ?
Если ты влупил куда-то свой хук-модуль средствами SetWindowsHookEx, то почему не "вылупить" его штатно, т.е. средствами UnhookWindowsHookEx ?
-
> Если ты влупил куда-то свой хук-модуль средствами SetWindowsHookEx,
> то почему не "вылупить" его штатно, т.е. средствами UnhookWindowsHookEx
> ?
Потому что это свечка :))
я её так и всатвлял...
-
> я её так и всатвлял
А причем здесь тогда хук ?