Конференция "WinAPI" » Выгрузка WinApi перехватчика [D7, WinXP]
 
  • Сергей М. © (27.08.08 12:14) [40]

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


    Дельфийское ? Без исходников ?
  • KygECHuK © (27.08.08 12:38) [41]

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

    да без них самих Зовут TestComplete "внутренний" в смысле не для клиентов
  • Сергей М. © (27.08.08 12:58) [42]
    Т.е. задача твоего плагина - перехватить данные, выводимые ТестКомплитом в некие контролы с пом. ф-ции TextOut, поскольку получить эти данные у ТестКомплита каким-либо иным легальным способом якобы не представляется возможным ?
  • KygECHuK © (27.08.08 13:49) [43]

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

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

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

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

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

    Поэтому следует учесть всевозможные способы вывода информации для сравнения её с ранее введённой. одним из таких спообов вывода и является интерфейс.
    Так, в любой момент времени мне могут понадобиться данны из интерфейса вводились они ранее имелись ли они в
  • KygECHuK © (27.08.08 13:51) [44]
    Базе данных
  • KygECHuK © (27.08.08 13:54) [45]
    Вот я перехватываю вывод АИС в опредлённой области
  • Сергей М. © (27.08.08 14:03) [46]

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


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

    Каким образом твой плагин, будучи загруженный в АП ТестКомплита, умудряется перехватывать вызовы ф-ций в АП совсем другого процесса, т.е. процесса АИС ?
  • KygECHuK © (27.08.08 14:18) [47]

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


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


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

    Ну да, всё так....
    Совсем другого процесса.. А как исчо WinApi хук делают?
  • Сергей М. © (27.08.08 14:36) [48]

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


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

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

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

    Картина правильно нарисована ?)
  • KygECHuK © (27.08.08 15:08) [49]

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

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

    а я думал это с самого начала понятно?
  • KygECHuK © (27.08.08 15:09) [50]
    Мне даже Rouse_ по теме отписывался...
  • Сергей М. © (27.08.08 15:36) [51]

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


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

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


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


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

    Тебя ж про какие-то плагины понесло, которые, оказывается, к делу отношения не имеют)
    Да и метод установки хука для решения задачи "насильственного" внедрения вовсе не единственный.
  • KygECHuK © (27.08.08 15:57) [52]

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


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


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


    Вот это я все зделал, но.. ошибка...
  • Сергей М. © (27.08.08 16:04) [53]

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


    Т.е. ты вызываешь UnhookWindowsHookEx и в этот же момент получаешь AV ?
    А по какому адресу ?
  • KygECHuK © (27.08.08 16:18) [54]

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


    Нет это перехват сообщений. у мну реализован перехват на уровне подмены адресов функций IAT
  • Сергей М. © (27.08.08 16:26) [55]

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


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

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


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


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

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

    Давай уже иллюстрируй фрагментами реального кода, имеющего непосредственное отношение к делу, если не можешь изъясняться терминологически правильно)
  • KygECHuK © (27.08.08 16:45) [56]

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


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

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


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


    Ну да? нет у меня специального образования....
    Сейчас фрагмент предоставить не могу - уже дома, поэтому завтра.
    Да и кокнретный участок кода выявить не могу в дебаге все проходит идеально.
  • Сергей М. © (27.08.08 16:52) [57]

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


    Не понял ..

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

    Если ты влупил куда-то свой хук-модуль средствами SetWindowsHookEx, то почему не "вылупить" его штатно, т.е. средствами UnhookWindowsHookEx ?
  • KygECHuK © (27.08.08 16:58) [58]

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

    Потому что это свечка :))
    я её так и всатвлял...
  • Сергей М. © (27.08.08 17:00) [59]

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


    А причем здесь тогда хук ?
 
Конференция "WinAPI" » Выгрузка WinApi перехватчика [D7, WinXP]
Есть новые Нет новых   [134435   +33][b:0.001][p:0.001]