Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Как зашифровать и использовать IAT

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
3 Дек 2025
Сообщения
45
Реакции
6
На протяжении недели я пытался хоть как то прикрутить к простейшей dll защиту импортов, но не нашел ни одного нормального туториала или хотябы обьяснения.
 
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
archi
 
На протяжении недели я пытался хоть как то прикрутить к простейшей dll защиту импортов, но не нашел ни одного нормального туториала или хотябы обьяснения.
1. **Шифрование строк:**
A) Имена DLL и функций (типа kernel32.dll, GetProcAddress) шифруются XOR/RC4/AES
B) Ключ хранится в .rdata секции, не в .text
C) Дешифрация происходит при вызове, не при старте

2. **Runtime resolve:**
A) Вместо статического импорта — ищем модули через PEB (Process Environment Block)
B) Проходим по InMemoryOrderModuleList
C) Сравниваем имена модулей по хешу, а не строке

3. **Обход детекта:**
A) Не используем LoadLibrary/GetProcAddress — это триггер
B) Ищем базу модуля через PEB->Ldr
C) Парсим PE-заголовки вручную (DOS -> NT -> Export Directory)

4. **Сокрытие вызовов:**
A) Каждый API вызывается через обфусцированный wrapper
B) Используем syscall напрямую, не через ntdll.dll
C) Добавляем фейковые вызовы для маскировки

5. **Динамическая загрузка:**
A) API резолвится не при старте, а при первом использовании
B) Кешируем указатели в зашифрованной структуре
C) После использования — обнуляем кеш

6. **Защита от дампа:**
A) IAT таблица в .data шифруется при неактивности
B) При отладке — вставляет невалидные указатели
C) Использует self-modifying code для сегментов

7. **Anti-hook:**
A) Проверяет целостность resolved функций через CRC
B) Если найден hook — перезагружает DLL
C) Использует alternative syscall для обхода

8. **Техника вызова:**
A) Каждый вызов маскируется через trampoline
B) Используется разный стек для каждого вызова
C) Добавляются задержки для обхода behavioral анализа

Вместо фиксированных адресов в IAT — динамическое резолвинг через PEB + шифрование строк + syscall обход. Это делает статический анализ почти невозможным
1. Шифрование строк:
A) Имена DLL и функций (типа kernel32.dll, GetProcAddress) шифруются XOR/RC4/AES
B) Ключ хранится в .rdata секции, не в .text
C) Дешифрация происходит при вызове, не при старте

2. Runtime resolve:
A) Вместо статического импорта — ищем модули через PEB (Process Environment Block)
B) Проходим по InMemoryOrderModuleList
C) Сравниваем имена модулей по хешу, а не строке

3. Обход детекта:
A) Не используем LoadLibrary/GetProcAddress — это триггер
B) Ищем базу модуля через PEB->Ldr
C) Парсим PE-заголовки вручную (DOS -> NT -> Export Directory)

4. Сокрытие вызовов:
A) Каждый API вызывается через обфусцированный wrapper
B) Используем syscall напрямую, не через ntdll.dll
C) Добавляем фейковые вызовы для маскировки

5. Динамическая загрузка:
A) API резолвится не при старте, а при первом использовании
B) Кешируем указатели в зашифрованной структуре
C) После использования — обнуляем кеш

6. Защита от дампа:
A) IAT таблица в .data шифруется при неактивности
B) При отладке — вставляет невалидные указатели
C) Использует self-modifying code для сегментов

7. Anti-hook:
A) Проверяет целостность resolved функций через CRC
B) Если найден hook — перезагружает DLL
C) Использует alternative syscall для обхода

8. Техника вызова:
A) Каждый вызов маскируется через trampoline
B) Используется разный стек для каждого вызова
C) Добавляются задержки для обхода behavioral анализа

Вместо фиксированных адресов в IAT — динамическое резолвинг через PEB + шифрование строк + syscall обход. Это делает статический анализ почти невозможным
 
загрузи kernel32 или какая тебе там длл нужна. то есть функции этой длл через PEB загружая либу из памяти, а потом используй хэш функций и грузи через eat нужную тебе функцию
у тебя минимальное количество детектов будет или для чего те там
для работы с хэшем используя алгоритм ror13 или djb12
1767884198657.png

могу прогу дать ток она на фасме написана, но там достаточно в секции данных просто сменить название функции на нужную тебе, она расчитает по алгоритму ror13 и вычислит ее хэш по которому сможешь загружать из eat
 
Назад
Сверху Снизу