Конференция "WinAPI" » Выгрузка WinApi перехватчика [D7, WinXP]
 
  • Сергей М. © (27.08.08 17:04) [60]
    Хук обычно "вставляют" так как прописал доктор БГ)

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

    Ты чего мудришь-то ? В реанимацию метишь ?)
  • KygECHuK © (27.08.08 17:16) [61]

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


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


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


    И не думал мутить - казалось так все делают.... :)
  • KygECHuK © (27.08.08 17:19) [62]
    Раз так, тогда завтра предоставлю код
    и попробую "Засуспензить" родные потки при выгрузке
  • Сергей М. © (27.08.08 17:29) [63]

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


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

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

    Прокомментируй свою логику, если она вообще имеется, мне она пока не ясна ..
  • KygECHuK © (27.08.08 17:40) [64]

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

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

    Меня что предадут анафине? Ну допустим не в курсе я был что  документированным и рекомендованным способом можно перехватывать определённые импортированиы функции. SetWindowsHook использовал только для перехвата сообщений окна и то это было давно и недавно, не думаю что моё решение столь опасно... и к тому же вроде работает.. ну почти.. :)
  • KygECHuK © (27.08.08 17:41) [65]
    *давно и не правда..
  • KygECHuK © (27.08.08 17:54) [66]
    Ну допустим я использую  SetWindowsHookEx,  тогда какими будут праметры для перехвата TextOut'а?
  • Сергей М. © (27.08.08 19:28) [67]

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


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


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


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

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

    До "перехвата" в нашем с тобой разговоре еще как до Китая ползком на карачках)
  • Сергей М. © (27.08.08 19:32) [68]

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


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

    Ну подумаешь - в основном работает, но маленько не работает - стоило ли волноваться ?) Нехай себе маленько глючит, глвное чтобы в целом немаленько неглючило)
  • KygECHuK © (27.08.08 19:47) [69]

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

    Нет, постой паравоз, мне все равно интересно с каками параметрами должна вызваться SetWindowsHookEx, что бы переданная CallBack процедура срабатывала на вызов TextOut ? Вопрос вроде простой..
  • Сергей М. © (27.08.08 19:55) [70]

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


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

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

    Ты его, свой код то бишь, нахрена внедряешь средствами CreateRemoteThread ?
    Почему ты для этой цели не пользуешь SetWindowsHookex ?
    Пока ты не прокомментируешь логику принятия своего решения, дальнейшее обсуждение темы и проблемы лишено резона.
  • KygECHuK © (27.08.08 20:16) [71]

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

    Как этот способ может мне помочь?
    Вот листаю докуметнтацию:
    "Функция SetWindowsHookEx устанавливает определяемую программой подключаемую процедуру в цепочку hook-точек."
    Что общего может иметь цепочка hook-точек и вызов TextOut из какой то библиотеки хоть user32.dll функция DrawText
  • KygECHuK © (27.08.08 20:17) [72]
    *функцией DrawText
  • Сергей М. © (27.08.08 20:46) [73]

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


    Ничего общего.
    Тебе оно и не надо.
    Тебе надо получить управление при загрузке/выгрузке своего модуля в/из АП жертвы.
    При получении управления при загрузке ты включаешь свой перехват, при получении управления при выгрузке ты выключаешь свой перехват.
    Эту самую загрузку/выгрузку твоего модуля система выполнит самостоятельно,  с соблюдением канонов межпоточной синхронизации.
  • KygECHuK © (27.08.08 21:41) [74]
    А как справоцировать получение управления в таком случае? Как Заставить загружаться модуль? Я не в смысле что это не возможно... просто реально не знаю.
  • Сергей М. © (28.08.08 08:18) [75]

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


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


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


    Обеспечить условия, при которых это событие гарантированно возникнет.
    Например, "подписаться" на WH_GETMESSAGE и послать целевому окну WM_USER.
    Как только целевая оконная ф-ция выберет любое сообщение из очереди, система немедленно загрузит твой хук-модуль, при этом отработает процедура инициализации, где ты волен выполнять модификацию IAT.
  • KygECHuK © (28.08.08 09:38) [76]
    Ну а выгрузка, получается, вызовом  UnhookWindowsHookEx ?

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

    И тело CallBack процедуры можно оставить пустым?
  • Сергей М. © (28.08.08 10:18) [77]

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


    Нет, она тоже не сразу произойдет, только при первом событии подписки.


    > код библиотеки в при инциализации и финализации менять не
    > надо?


    Смотря что за код у тебя там.


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


    Пустым нельзя. Цепочку хуков оборвешь тем самым.
    см. CallNextHookEx
  • KygECHuK © (28.08.08 10:37) [78]

    > Нет, она тоже не сразу произойдет, только при первом событии
    > подписки.


    Т.е.

    ставим WindowsHookEx
    посылаем событие подписки  
    //библиотека загружена

    снимаем UnhookWindowsHookEx
    посылаем событие подписки  
    // библиотека выгружена

    я правильно понял?
  • Сергей М. © (28.08.08 10:58) [79]

    > я правильно понял?


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