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. Всё работает хорошо, вот только что при выгрузке перхватчика с некоторойй вероятностью появлятся ошибка доступа к памяти...

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


Сергей М.   (2008-09-02 21:04:00) [21]

Да и, похоже, ни о чем она была - как был у тебя вопрос про AV неразрешенным, так он таким и остался.


KygECHuK   (2008-09-02 21:00:00) [22]

да и тема себя изчерпала


KygECHuK   (2008-09-02 20:21:00) [23]


> Да просто устал я от твоего Монте-Карло, извини уж)


Я вообще подумал что это про книгу котрая устарела )


Сергей М.   (2008-09-02 20:11:00) [24]

Да просто устал я от твоего Монте-Карло, извини уж)


KygECHuK   (2008-09-02 19:33:00) [25]


> Нет, это зарубки на скальных образованиях Мезозоя.


Жестко, а что так?


Сергей М.   (2008-09-02 19:29:00) [26]


> Надо бы мне его почитать, это веть книга? )


Нет, это зарубки на скальных образованиях Мезозоя.


KygECHuK   (2008-09-02 19:09:00) [27]


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


Вот это я уже сам выяснил эвристически то-есть тыком :). Спасибо за подтверждение моей догадки.


> все как у Рихтера. Или ты что-то иное имеешь ввиду?

Надо бы мне его почитать, это веть книга? )


Leonid Troyanovsky   (2008-09-02 18:04:00) [28]


> KygECHuK ©   (02.09.08 15:42) [136]

> А точно неявная выгрузка ловушки происходит только по завершению
> процесса?

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

--
Regards, LVT.


evvcom   (2008-09-02 17:57:00) [29]

загрузка CreatRemoteThread Loadlibrary
выгрузка CreatRemoteThread FreeLibrary
все как у Рихтера. Или ты что-то иное имеешь ввиду?


KygECHuK   (2008-09-02 17:33:00) [30]


> Ну так я сразу на реальной жертве экспериментирую :-)


Ну так выгрузку при CreatRemoteThread ты как организовал?


evvcom   (2008-09-02 17:28:00) [31]


> У меня тоже до "полевого" применения ошибок не было, а вот
> потом...

Ну так я сразу на реальной жертве экспериментирую :-)


evvcom   (2008-09-02 17:27:00) [32]

Кстати, с доп.потоками в dll. Может пригодится. На днях выяснил, что если создавать или завершать доп.поток внутри DLL_PROCESS_ATTACH/DETACH, то получим граблями, так как тогда должны одновременно выполняться коды DLL_THREAD_ATTACH/DETACH, а это запрещено системой. Причем DisableThreadLibraryCalls не спасает, т.к. связано это все же с выделением памяти под структуры потока.


KygECHuK   (2008-09-02 17:16:00) [33]


> DLL уже внедряется и выгружается без ошибок.


У меня тоже до "полевого" применения ошибок не было, а вот потом...


KygECHuK   (2008-09-02 17:10:00) [34]

нашел причину, все дело в вспомогательном потоке, по его завершении выгружается перехватчик, всего делов. Дело не критчное. Ошибок не нашли. Акуна матата...


Сергей М.   (2008-09-02 17:08:00) [35]


> проверял на Notepad'е - нет там ничего партизанского
>


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


evvcom   (2008-09-02 17:07:00) [36]

Да я и сам могу поделиться :)
DLL уже внедряется и выгружается без ошибок.
Сейчас пишу систему общения, протокол обмена информацией.
В той задаче с локальным решением устанавливались ловушки, а вот со съемом была проблема. IDA Pro тогда показал, что после загрузки плагинов, то приложение читало адрес перехваченной функции, сохраняло его в регистре и дальше уже в рабочем цикле выполняло call <Register>. Внутри этого цикла в итоге вызывалась и FreeLibrary для плагина. Так и пришлось тогда перехватывать еще и FreeLibrary и в случае выгрузки моей dll команду пропускать мимо ушей :)


KygECHuK   (2008-09-02 16:42:00) [37]


> завершения еще далеко :)


Желаю удачи, будут проблемы - поделюсь наболевшим..


evvcom   (2008-09-02 16:30:00) [38]

Я-то чего влез? Сам пишу подобное. У меня раньше была задача аналогичная, я ее решил локально. Теперь еще 2 похожие задачи нарисовались. Вот только процесс в одной из них уже не GUI. Вот и решил написать нечто универсальное. Сервис, чтобы работать могло и под учеткой простого смертного, универсальная dll-внедрялка через RemoteThread и собственно для каждой задачи своя dll, реализующая перехваченные функции. По ходу возникают разные проблемы, но они пока решаются, хотя и до завершения еще далеко :)


KygECHuK   (2008-09-02 16:30:00) [39]


>  Сторонний код, внедренный кем-то в то же АП и "пасущий"
> твой модуль чтобы навредить тебе, естественно, я не рассматриваю
> ..


проверял на Notepad'е - нет там ничего партизанского


> разгребай уж сам)


Постараюсь


Сергей М.   (2008-09-02 16:05:00) [40]


> 1 Жмакаем кнопку хук внедряется
> 3 Жмакаем другую кнопку хук извлекается
>
> то есть всё как вы написали


Так ведь иначе и быть не может)

А все остальное, что ты нагородил вокруг этого огорода, к собственно огороду отношения не имеет - разгребай уж сам)


> А точно неявная выгрузка ловушки происходит только по завершению
> процесса?


Ну если ты нигде не вызываешь ни UnHook ни FreeLibrary, то кто еще может сделать это кроме системы по завершению целевого процесса ? Сторонний код, внедренный кем-то в то же АП и "пасущий" твой модуль чтобы навредить тебе, естественно, я не рассматриваю ..


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

Наверх

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