Сейчас на форуме: Lohmaty, tyns777 (+8 невидимых)

 eXeL@B —› Вопросы новичков —› Кто поставил хук
Посл.ответ Сообщение

Ранг: 18.9 (новичок), 4thx
Активность: 0.030.05
Статус: Участник

Создано: 08 января 2018 10:02 · Поправил: Ate
· Личное сообщение · #1

Здравствуйте, с прошедшими!
Подскажите, есть достаточно инструментов чтобы посмотреть установленные в процессах хуки, а есть ли инструменты, которые могут определять кто данный хук установил?
Я пробовал определить сам, действуя в лоб - если это вызов или прыжок, по адресу назначения через GetModuleHandleEx + GetModuleFileName, чтобы понять в какой модуль осуществляется переход, но то ли написал кривовато, то ли это вообще не рабочий случай.

В общем, подскажите инструменты, или пути самостоятельной реализации для такого случая.



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 января 2018 10:50 · Поправил: 0xC3
· Личное сообщение · #2

RkU, Gmer, PCHunter



Ранг: 18.9 (новичок), 4thx
Активность: 0.030.05
Статус: Участник

Создано: 08 января 2018 11:34 · Поправил: Ate
· Личное сообщение · #3

Ate пишет:
есть достаточно инструментов чтобы посмотреть установленные в процессах хуки

К которым относится все вышеперечисленное, никто из них не имеет искомый функционал.

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



Ранг: 1.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 января 2018 11:56
· Личное сообщение · #4

Тогда вам необходимо определить есть ли хук вообще, сравнивая префикс на диске и в памяти. Затем посмотреть куда поставлен переход, через перечисление загруженых модулей создать таблицу BaseAdress - Virtual size, затем через QueryVirtualMemory определиться уже с модулем куда идет перенаправление.




Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 08 января 2018 20:45
· Личное сообщение · #5

0xC3 пишет:
но если хук явный и указывает вместо штатного указателя переход на один из загруженных модулей, то почему бы эту информацию дополнительно не указать

А если хук внутри одной либы (даже функции)..., задача в общем нерешаема

-----
Everything is relative...




Ранг: 18.9 (новичок), 4thx
Активность: 0.030.05
Статус: Участник

Создано: 09 января 2018 02:08
· Личное сообщение · #6

Vamit пишет:
А если хук внутри одной либы (даже функции)

тогда на выходе будет имя собственного модуля, в чем проблема отфильтровать эти частные случаи?

Ate пишет:
определить "источник" хука постфактум вообще нерешаемая задача, но

если ссылка на модуль в адресном пространстве и этот модуль != наш модуль - пытаемся получить имя модуля.
Это все что я хотел бы получить (реализовать). Разве невыполнимо?




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 09 января 2018 03:06 · Поправил: difexacaw
· Личное сообщение · #7

Ate

Не хук", а патч во первых. Хуки это один из оконных механизмов --> Link <--

Так как код перетёрт может быть как угодно, то что бы не покрывать все возможные варианты(да и в статике такое врядле возможно) можно сделать так. Находим изменённый код, инструкцию в буфер, адрес её в таблицу, а вместо инструкции пишем Int3. Когда ловушка сработает начинаем трассировать до выхода из текущей секции модуля. Кстате есчо придётся рекурсивно цепочку обработчиков ловушек трассировать, так как патч может быть через Int3

Добавлено спустя 10 минут
> GetModuleFileName, чтобы понять в какой модуль осуществляется переход

Обычно переход выполняется в промежуточный буфер. Так что нужно всю трассу снять, что бы попытаться найти передачу управления в модуль, который как то связан с обработкой патча. Хотя модуля может не быть вовсе.

-----
vx



 eXeL@B —› Вопросы новичков —› Кто поставил хук
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати