Для x86 есть полно библиотек для хукинга функций экспортируемых из dll (например я исползую madCHook). Может ли кто посоветовать что нибудь для х64? Самостоятельный поиск ничего полезного не дал
Если ничего не найду - буду делать сам. Detours вроде потдерживает х64, но нигде не могу найти их professional edition (только там есть х64).
katrus Смотря как реализуешь . Если обычный сплайсинг .. просто для слежения из 3 кольца. То все как обычно если есть права админа. Если скрытно ... там уже нюансы, да и драйвер не загрузишь без подписи просто так.
Нюанс есть - сплайсинг а-ля 0xe9-rel32 выростает до 17 байтов и частенько затирает такие опкоды, перемещать которые нельзя. Я лично юзаю ВЕХ-и с #UD2 А в остальном, прекрасная маркиза...
фиксить относительные переходы в кусках кода которые в каллгейт переносятся не есть большая проблема, имхо
z0mailbox На самом деле заменял таким образом (поначалу, потом конечно VEH) основные которые требовались нормально сплайсились - 13 байт, если не изменяет мне моя память. Часть байт потертых - копировал в буфера длл-ки. И на них потом перенаправлял... А из нгих обратно в нтдлл.
z0mailbox чё-то много, ваще-то в пролог(rax не юзается) можно без проблем записать Код (Text): // 48b8fefefefefefefefe mov rax,0FEFEFEFEFEFEFEFEh // ffe0 jmp rax это 12 байт, но используется регистр, без его использования Код (Text): // 50 push rax // 48b8fefefefefefefefe mov rax,0FEFEFEFEFEFEFEFEh // 48870424 xchg rax,qword ptr [rsp] // c3 ret это 16 байт, но т.к. обычно он используется для передачи управления со скопированных из начала функции инстукций то пофик. Вот недавно игрался мож кому интересно
Кстати, а где можно найти "динамический дизассемблер" для х64, чтоб знать сколько каждая заменяемая команда в прологе функции занимает байт - сколько скопировать и т.д.?
katrus Куда еще подробнее? Код выложить? IceStudent я юзаю 0f 0b rain я делал все то же самое но без xchg - получилось 17, один фиг много, реально из 7 хуков один попал на инструкцию с rel32