![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выгрузка WinApi перехватчика [D7, WinXP]
KygECHuK © (2008-08-26 10:33:00)
Страницы: < 1 2 3 4 5 6 7 8 9 >
занимаюсь автоматизированным тестированием, оформил плагин для перехвата отрисовки текста. он подменяет адресса к функциям в таблице импорта, в моём случае это 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, то кто еще может сделать это кроме системы по завершению целевого процесса ? Сторонний код, внедренный кем-то в то же АП и "пасущий" твой модуль чтобы навредить тебе, естественно, я не рассматриваю ..