eXeL@B —› Вопросы новичков —› Кто поставил хук |
Посл.ответ | Сообщение |
|
Создано: 08 января 2018 10:02 · Поправил: Ate · Личное сообщение · #1 Здравствуйте, с прошедшими! Подскажите, есть достаточно инструментов чтобы посмотреть установленные в процессах хуки, а есть ли инструменты, которые могут определять кто данный хук установил? Я пробовал определить сам, действуя в лоб - если это вызов или прыжок, по адресу назначения через GetModuleHandleEx + GetModuleFileName, чтобы понять в какой модуль осуществляется переход, но то ли написал кривовато, то ли это вообще не рабочий случай. В общем, подскажите инструменты, или пути самостоятельной реализации для такого случая. |
|
Создано: 08 января 2018 10:50 · Поправил: 0xC3 · Личное сообщение · #2 |
|
Создано: 08 января 2018 11:34 · Поправил: Ate · Личное сообщение · #3 Ate пишет: есть достаточно инструментов чтобы посмотреть установленные в процессах хуки К которым относится все вышеперечисленное, никто из них не имеет искомый функционал. В принципе можно понять его отсутствие, определить "источник" хука постфактум вообще нерешаемая задача, но если хук явный и указывает вместо штатного указателя переход на один из загруженных модулей, то почему бы эту информацию дополнительно не указать. Мне как раз это нужно, в уже реализованном виде, или в виде концепта, как это программно реализовать. |
|
Создано: 08 января 2018 11:56 · Личное сообщение · #4 |
|
Создано: 08 января 2018 20:45 · Личное сообщение · #5 |
|
Создано: 09 января 2018 02:08 · Личное сообщение · #6 Vamit пишет: А если хук внутри одной либы (даже функции) тогда на выходе будет имя собственного модуля, в чем проблема отфильтровать эти частные случаи? Ate пишет: определить "источник" хука постфактум вообще нерешаемая задача, но если ссылка на модуль в адресном пространстве и этот модуль != наш модуль - пытаемся получить имя модуля. Это все что я хотел бы получить (реализовать). Разве невыполнимо? |
|
Создано: 09 января 2018 03:06 · Поправил: difexacaw · Личное сообщение · #7 Ate Не хук", а патч во первых. Хуки это один из оконных механизмов Так как код перетёрт может быть как угодно, то что бы не покрывать все возможные варианты(да и в статике такое врядле возможно) можно сделать так. Находим изменённый код, инструкцию в буфер, адрес её в таблицу, а вместо инструкции пишем Int3. Когда ловушка сработает начинаем трассировать до выхода из текущей секции модуля. Кстате есчо придётся рекурсивно цепочку обработчиков ловушек трассировать, так как патч может быть через Int3 Добавлено спустя 10 минут > GetModuleFileName, чтобы понять в какой модуль осуществляется переход Обычно переход выполняется в промежуточный буфер. Так что нужно всю трассу снять, что бы попытаться найти передачу управления в модуль, который как то связан с обработкой патча. Хотя модуля может не быть вовсе. ----- vx |
eXeL@B —› Вопросы новичков —› Кто поставил хук |