Функции
Ознакомьтесь с основными возможностями и типичными сценариями использования плагина, включая реальные примеры, где он особенно полезен.
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.
- Создавайте плагины даже для ПО, которое не поддерживает расширения напрямую.