Волшебные хуки. Как перехватывать управление любой программой через WinAPI - «Новости»
Южная Корея обеспечит всех граждан страны безлимитным доступом к генеративным ИИ-сервисам - «Новости сети»
Южная Корея обеспечит всех граждан страны безлимитным доступом к генеративным ИИ-сервисам - «Новости сети»
Тайвань расследует подделку маркировки печатных плат — продукцию «Made in China» выдавали за тайваньскую - «Новости сети»
Тайвань расследует подделку маркировки печатных плат — продукцию «Made in China» выдавали за тайваньскую - «Новости сети»
Всё лучшее — детям: глава Nvidia поручил своим дочери и сыну руководство проектами в сфере робототехники - «Новости сети»
Всё лучшее — детям: глава Nvidia поручил своим дочери и сыну руководство проектами в сфере робототехники - «Новости сети»
Робоутка за $399 покорила сердца разработчиков — за сутки её заказали на $2,6 млн - «Новости сети»
Робоутка за $399 покорила сердца разработчиков — за сутки её заказали на $2,6 млн - «Новости сети»
Японцы испытали «силовое поле» для торможения возвращаемых кораблей в атмосфере - «Новости сети»
Японцы испытали «силовое поле» для торможения возвращаемых кораблей в атмосфере - «Новости сети»
Автор утечек GTA VI показал первый геймплей за Лусию и обвинил Rockstar в эксплуатации работников - «Новости сети»
Автор утечек GTA VI показал первый геймплей за Лусию и обвинил Rockstar в эксплуатации работников - «Новости сети»
Sony не разочаровала подписчиков PS Plus анонсом игр на сентябрь - «Новости сети»
Sony не разочаровала подписчиков PS Plus анонсом игр на сентябрь - «Новости сети»
Бунт персонала остановил план Цукерберга по замене 60 % сотрудников Meta✴ на ИИ-агентов - «Новости сети»
Бунт персонала остановил план Цукерберга по замене 60 % сотрудников Meta✴ на ИИ-агентов - «Новости сети»
Выпуск драйверов Nvidia GeForce Game Ready для Windows 10 прекратится в октябре - «Новости сети»
Выпуск драйверов Nvidia GeForce Game Ready для Windows 10 прекратится в октябре - «Новости сети»
Лидерство Tesla было недолгим — BYD снова стала крупнейшим производителем электрокаров в мире - «Новости сети»
Лидерство Tesla было недолгим — BYD снова стала крупнейшим производителем электрокаров в мире - «Новости сети»
Новости мира Интернет » Новости » Волшебные хуки. Как перехватывать управление любой программой через WinAPI - «Новости»

Содержание статьи

  • Почему хуки работают?
  • Пролог функций, трамплин и дизассемблер длин инструкций
  • Тестовое приложение
  • Итого
Технология?перехвата вызовов функций WinAPI известна уже давно, она часто используется как в троянах и вирусах, так и в снифферах, трейнерах для игр, а также в любых ситуациях, когда нужно заставить чужое приложение выполнять код, которого там никогда не было. Я расскажу, как пользоваться этой могучей техникой, а затем мы напишем библиотеку перехвата методом сплайсинга.

Какие бывают хуки


Ловушки (hook) могут быть режима пользователя (usermode) и режима ядра (kernelmode). Установка хуков режима?пользователя сводится к методу сплайсинга и методу правки таблиц IAT. Ограничения этих методов очевидны: перехватить можно только userspace API, а вот до функций с префиксом Zw*, Ki* и прочих «ядерных» из режима пользователя дотянуться нельзя.


Установка хуков режима?ядра позволяет менять любую информацию, которой оперирует Windows на самом низком уровне. Для перехватов подобного типа необходимо модифицировать таблицы SSDT/IDT либо менять само тело функции (kernel patch). Надо сказать, что в Windows на архитектуре x64 ядро контролирует свою целостность при помощи механизма KPP (Kernel Patch Protection), который является?частью PatchGuard и просто так подобные манипуляции с системными таблицами сделать не позволит.


Почему хуки работают?


Когда Windows запускает приложение, создается его процесс и потоки, загрузчик ОС ищет зависимости динамических библиотек, которые нужны для работы программы. Поиск ведется сначала в папке, где?находится исполняемый файл, далее в нескольких системных папках. После того как нужные библиотеки найдены, определяются необходимые для работы функции, составляется таблица зависимостей функций и библиотек, где они находятся. Программа помнит все?эти данные и пользуется ими при вызове функций. Наша задача — загрузить в адресное пространство приложения нашу библиотеку и исправить таблицу зависимостей в программе таким образом, чтобы она думала, будто функции, которые ей?нужны, находятся именно в нашей библиотеке, а не в той, где они были раньше.


Сплайсинг функций WinAPI


Пролог функций, трамплин и дизассемблер длин инструкций


Функции WinAPI начинаются с пролога — это стандартный код, отвечающий за балансировку стека?для корректного доступа к локальным переменным, которые использует функция. Обычно пролог выглядит таким образом:


mov edi,edi 
push ebp
mov ebp,esp
[/code]

В большинстве функций он одинаков, и поэтому на его место можно добавить инструкцию безусловного перехода jmp, которая передаст управление на?наш код. Это называется «трамплин» — мы просто уводим поток выполнения функции в наш код, где делаем все, что хотим: можем подменить результат выполнения функции, можем вызвать какой-то другой код, запустить процесс — одним словом, массу всего. Но чтобы грамотно реализовать перехватчик функций?методом сплайсинга, нам нужен дизассемблер длин инструкций.


Волшебные хуки. Как перехватывать управление любой программой через WinAPI - «Новости»
INFO

Дизассемблер длин позволяет вычислять длины команд процессора. Часто используется для анализа прологов функций.



Зачем нам использовать дизассемблер длин, если мы и так знаем пролог функций? Дело в том, что прологи функций отличаются. Не хотелось бы постоянно заглядывать в дизассемблер и проверять, подходит ли пролог очередной перехватываемой функции под наш сплайсер. В нем ведь четко прописано, какое количество байтов мы будем использовать.


В том случае, если?мы «настроим» нашу функцию сплайсинга на стандартный пролог, а он окажется другим, то после реализации перехвата выполнение может пойти не с начала машинной команды, а с какой-то ее части. Одним словом, мы повредим?код программы, она вызовет исключение и будет аварийно завершена операционной системой. Если же использовать дизассемблер длин инструкций, то сплайсер всегда точно будет знать, где начинается следующая инструкция, и корректно встраивать трамплин.


Источник новостиgoogle.com

Содержание статьи Почему хуки работают? Пролог функций, трамплин и дизассемблер длин инструкций Тестовое приложение Итого Технология?перехвата вызовов функций WinAPI известна уже давно, она часто используется как в троянах и вирусах, так и в снифферах, трейнерах для игр, а также в любых ситуациях, когда нужно заставить чужое приложение выполнять код, которого там никогда не было. Я расскажу, как пользоваться этой могучей техникой, а затем мы напишем библиотеку перехвата методом сплайсинга. Какие бывают хуки Ловушки (hook) могут быть режима пользователя (usermode) и режима ядра (kernelmode). Установка хуков режима?пользователя сводится к методу сплайсинга и методу правки таблиц IAT. Ограничения этих методов очевидны: перехватить можно только userspace API, а вот до функций с префиксом Zw*, Ki* и прочих «ядерных» из режима пользователя дотянуться нельзя. Установка хуков режима?ядра позволяет менять любую информацию, которой оперирует Windows на самом низком уровне. Для перехватов подобного типа необходимо модифицировать таблицы SSDT/IDT либо менять само тело функции (kernel patch). Надо сказать, что в Windows на архитектуре x64 ядро контролирует свою целостность при помощи механизма KPP (Kernel Patch Protection), который является?частью PatchGuard и просто так подобные манипуляции с системными таблицами сделать не позволит. Почему хуки работают? Когда Windows запускает приложение, создается его процесс и потоки, загрузчик ОС ищет зависимости динамических библиотек, которые нужны для работы программы. Поиск ведется сначала в папке, где?находится исполняемый файл, далее в нескольких системных папках. После того как нужные библиотеки найдены, определяются необходимые для работы функции, составляется таблица зависимостей функций и библиотек, где они находятся. Программа помнит все?эти данные и пользуется ими при вызове функций. Наша задача — загрузить в адресное пространство приложения нашу библиотеку и исправить таблицу зависимостей в программе таким образом, чтобы она думала, будто функции, которые ей?нужны, находятся именно в нашей библиотеке, а не в той, где они были раньше. Сплайсинг функций WinAPI Пролог функций, трамплин и дизассемблер длин инструкций Функции WinAPI начинаются с пролога — это стандартный код, отвечающий за балансировку стека?для корректного доступа к локальным переменным, которые использует функция. Обычно пролог выглядит таким образом: В большинстве функций он одинаков, и поэтому на его место можно добавить инструкцию безусловного перехода jmp, которая передаст управление на?наш код. Это называется «трамплин» — мы просто уводим поток выполнения функции в наш код, где делаем все, что хотим: можем подменить результат выполнения функции, можем вызвать какой-то другой код, запустить процесс — одним словом, массу всего. Но чтобы грамотно реализовать перехватчик функций?методом сплайсинга, нам нужен дизассемблер длин инструкций. INFO Дизассемблер длин позволяет вычислять длины команд процессора. Часто используется для анализа прологов функций. Зачем нам использовать дизассемблер длин, если мы и так знаем пролог функций? Дело в том, что прологи функций отличаются. Не хотелось бы постоянно заглядывать в дизассемблер и проверять, подходит ли пролог очередной перехватываемой функции под наш сплайсер. В нем ведь четко прописано, какое количество байтов мы будем использовать. В том случае, если?мы «настроим» нашу функцию сплайсинга на стандартный пролог, а он окажется другим, то после реализации перехвата выполнение может пойти не с начала машинной команды, а с какой-то ее части. Одним словом, мы повредим?код программы, она вызовет исключение и будет аварийно завершена операционной системой. Если же использовать дизассемблер длин инструкций, то сплайсер всегда точно будет знать, где начинается следующая инструкция, и корректно встраивать трамплин. Источник новости - google.com

Цитирование статьи, картинки - фото скриншот - Rambler News Service.
Иллюстрация к статье - Яндекс. Картинки.
Есть вопросы. Напишите нам.
Общие правила  поведения на сайте.

Смотрите также

А что там на главной? )))



Комментарии )))