Хукинг экспортируемых функций

Тема в разделе "WASM.X64", создана пользователем katrus, 30 окт 2007.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Для x86 есть полно библиотек для хукинга функций экспортируемых из dll (например я исползую madCHook). Может ли кто посоветовать что нибудь для х64? Самостоятельный поиск ничего полезного не дал :dntknw:
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    А как насчёт самостоятельной реализации? Кстати, detours x64 поддерживает?
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Если ничего не найду - буду делать сам.
    Detours вроде потдерживает х64, но нигде не могу найти их professional edition (только там есть х64).
     
  4. Termo_in_work

    Termo_in_work TermoSINteZ

    Публикаций:
    0
    Регистрация:
    31 июл 2007
    Сообщения:
    20
    Адрес:
    на работе
    Я для своих нужд сам писал.
     
  5. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Как работает в Vista x64? Есть ли какие подводные камни?
     
  6. Termo_in_work

    Termo_in_work TermoSINteZ

    Публикаций:
    0
    Регистрация:
    31 июл 2007
    Сообщения:
    20
    Адрес:
    на работе
    katrus
    Смотря как реализуешь . Если обычный сплайсинг .. просто для слежения из 3 кольца. То все как обычно если есть права админа.
    Если скрытно ... там уже нюансы, да и драйвер не загрузишь без подписи просто так.
     
  7. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    Нюанс есть - сплайсинг а-ля 0xe9-rel32 выростает до 17 байтов и частенько затирает такие опкоды, перемещать которые нельзя. Я лично юзаю ВЕХ-и с #UD2
    А в остальном, прекрасная маркиза...
     
  8. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Извини - ничего не понял. Можно, пожалуйста, подробнее?
     
  9. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    фиксить относительные переходы в кусках кода которые в каллгейт переносятся не есть большая проблема, имхо
     
  10. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    katrus
    SetVEH(veh_handler); __asm _emit 0xff, 0xff;
    думаю имелось в виду это.
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    0xFF, 0xFB - ud2 как есть..
     
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.549
    Адрес:
    Russia
    z0mailbox
    На самом деле заменял таким образом (поначалу, потом конечно VEH) основные которые требовались нормально сплайсились - 13 байт, если не изменяет мне моя память. Часть байт потертых - копировал в буфера длл-ки. И на них потом перенаправлял... А из нгих обратно в нтдлл.
     
  13. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    можно запустить процесс под отладкой и поставить хуки через таблицу экспорта
     
  14. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    z0mailbox
    чё-то много, ваще-то в пролог(rax не юзается) можно без проблем записать
    Код (Text):
    1.         //  48b8fefefefefefefefe mov rax,0FEFEFEFEFEFEFEFEh
    2.         //  ffe0            jmp     rax
    это 12 байт, но используется регистр, без его использования
    Код (Text):
    1.         //  50              push    rax
    2.         //  48b8fefefefefefefefe mov rax,0FEFEFEFEFEFEFEFEh
    3.         //  48870424        xchg    rax,qword ptr [rsp]
    4.         //  c3              ret
    это 16 байт, но т.к. обычно он используется для передачи управления со скопированных из начала функции инстукций то пофик. Вот недавно игрался мож кому интересно
     
  15. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Попробовал узнать сколько стоит detours pro - $10'000. Охренеть!
     
  16. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Кстати, а где можно найти "динамический дизассемблер" для х64, чтоб знать сколько каждая заменяемая команда в прологе функции занимает байт - сколько скопировать и т.д.?
     
  17. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    дизасмов длин не видел, но не трудно написать самому.
     
  18. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    katrus
    некто rain писал для x86/64
     
  19. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    katrus
    Куда еще подробнее? Код выложить?

    IceStudent
    я юзаю 0f 0b

    rain
    я делал все то же самое но без xchg - получилось 17, один фиг много, реально из 7 хуков один попал на инструкцию с rel32
     
  20. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    z0mailbox
    Да нет - сам разобрался. Теперь вожусь с дизассемблером.