Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
IAT-Hook — C++ DLL, выполняющая перехват таблицы импорта адресов (IAT) путём разбора заголовков PE и перенаправления адресов импортируемых функций на пользовательский хук внутри целевого процесса. | Kitploit
Инструменты/GitHubGitHub/gmh5225/iat-hook
Механизмы персистентностиАнализ КодаОбратная инженерияАнализ вредоносных программRed TeamingРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubgmh5225/iat-hook

IAT-Hook

C++ DLL, выполняющая перехват таблицы импорта адресов (IAT) путём разбора заголовков PE и перенаправления адресов импортируемых функций на пользовательский хук внутри целевого процесса.

Репозиторий
14 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Хук - IAT

Хукинг

Хукинг — это техника, позволяющая перенаправить поток выполнения программы. Чаще всего мы используем хукинг функций. Мы либо заменяем, либо перенаправляем функцию на нашу собственную — это очень полезно и имеет множество применений. Существует несколько способов хукинга, здесь мы рассматриваем IAT Hooking, что означает Import Address Table (Таблица адресов импорта). Он заключается в замене адреса функции на наш собственный в большой таблице, которая заполняется во время выполнения. Как я уже говорил в другом репозитории, рекомендую вам подробнее изучить PE Format, чтобы понять часть этого кода, связанную с парсингом IAT. Вот базовая диаграмма того, как работает IAT Hooking. В этом примере оригинальная функция вызывается после выполнения вредоносного кода. В данном примере мы просто вызовем другую функцию вместо оригинальной. Преимущество этой техники в том, что она не требует модификации тела функции, в отличие от обычного хука через патч .text с использованием detours, который должен изменять инструкции в начале функции, чтобы разместить, например, jmp.

image

Шаги для хукинга

На самом деле это гораздо проще, чем звучит. Мы будем действовать изнутри процесса, чтобы упростить задачу — это означает, что данный репозиторий скомпилируется в DLL, которую можно внедрить в целевой процесс с помощью моих инжекторов LoadLibraryA или Manual Mapping.

Сначала мы парсим PE Headers целевого процесса, чтобы найти Import Descriptor следующим образом:

process_base + nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;

Затем мы можем пройтись в цикле по каждому импортированному модулю, пройтись по каждой функции в этом модуле (причина вложенных циклов) и найти адрес той функции, который был заполнен во время выполнения. В этом примере мы захукаем TranslateMessage, которая используется Windows для обработки событий в GUI. Итак, как только мы нашли адрес этой функции, мы заменяем его на адрес нашей собственной функции, которую мы определили ранее и которая существует в контексте удалённого процесса, поскольку мы работаем изнутри. Не забудьте использовать VirtualProtect, чтобы убедиться, что у вас есть разрешение на запись в это место.

VirtualProtect(&firstThunk->u1.Function, sizeof(uint64_t), PAGE_READWRITE, &old_protection);
firstThunk->u1.Function = (uint64_t)hookfunction;

Демонстрация

Как видите, когда notepad вызывает TranslateMessage (практически постоянно), запускается наша хук-функция, которая в итоге отображает message box!

image

Скачать инструмент