Функции

Ознакомьтесь с основными возможностями и типичными сценариями использования плагина, включая реальные примеры, где он особенно полезен.

PolyHook — это универсальный и мощный плагин на C++, предназначенный для удобного создания динамических хуков функций с любой конвенцией вызова, а также с поддержкой колбэков до и после вызова. Построен с использованием библиотеки генерации машинного кода AsmJit и библиотеки дизассемблирования Capstone. PolyHook позволяет реализовывать динамическое перехватывание функций для архитектур x86/ARM с поддержкой 32/64-битных режимов на платформах Windows и Linux. Требует C++20 или новее и основан на библиотеке PolyHook_2_0 от stevemk14ebr.

Основные возможности

1. Динамическое перехватывание функций

  • Перехватывайте любые функции во время выполнения, независимо от их конвенции вызова.
  • Поддержка архитектур x86 и x64 на Windows и Linux.

2. Колбэки до и после вызова

  • Легко добавляйте хуки до и после вызова функции для наблюдения или изменения поведения.
  • Выполняйте пользовательскую логику до или после оригинальной функции.

3. Кроссплатформенность

  • Работает на Windows и Linux без изменений.
  • Поддержка как 32-битных, так и 64-битных приложений.

4. Основан на AsmJit и Capstone

  • Использует библиотеку AsmJit для генерации машинного кода на лету.
  • Применяет Capstone Disassembler для точного анализа инструкций.

5. Простая интеграция

  • Требуется C++20 или новее.
  • Простой и интуитивно понятный API для быстрой интеграции в проекты.

6. Настраиваемые хуки

  • Создавайте хуки для конкретных функций или целых классов.
  • Динамически изменяйте аргументы или возвращаемые значения функций.

7. Легковесность и эффективность

  • Минимальная нагрузка для высокопроизводительных приложений.
  • Оптимизирован как по скорости, так и по использованию памяти.

Сценарии использования

1. Модификация игр

  • Перехватывайте игровые функции для добавления новых возможностей или изменения поведения.
  • Создавайте собственные оверлеи, читы или отладочные инструменты.

2. Отладка программ

  • Наблюдайте за вызовами функций для диагностики проблем или анализа производительности.
  • Логируйте аргументы и возвращаемые значения функций.

3. Безопасность

  • Перехватывайте и анализируйте вызовы функций в целях аудита безопасности.
  • Блокируйте несанкционированные вызовы функций или доступ к данным.

4. Разработка плагинов

  • Расширяйте функциональность приложений, перехватывая их API.
  • Создавайте плагины даже для ПО, которое не поддерживает расширения напрямую.