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

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

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

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

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

Категории

Все категории
Loading categories
Alcatraz — Обфускатор x64-двоичных файлов PE с уплощением потока управления, защитой от дизассемблирования, обфускацией импорта и мутацией инструкций для затруднения обратной разработки. | Kitploit
Инструменты/GitHubGitHub/weak1337/alcatraz
Обратная инженерияАнализ Бинарных Файлов
GitHubweak1337/alcatraz

Alcatraz

Обфускатор x64-двоичных файлов PE с уплощением потока управления, защитой от дизассемблирования, обфускацией импорта и мутацией инструкций для затруднения обратной разработки.

Репозиторий
2.0k2683 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Alcatraz

Alcatraz — это обфускатор x64-двоичных файлов, способный обфусцировать различные PE-файлы, включая:

  • .exe
  • .dll
  • .sys

Обзор

  • Alcatraz
  • Требования
  • Использование
  • Возможности
    • Обфускация непосредственных перемещений
    • Сглаживание потока управления
    • Мутация ADD
    • Обфускация точки входа
    • Обфускация LEA
    • Анти-дизассемблирование
    • Обфускация импорта
    • Итоговый результат

Требования

Установите: https://vcpkg.io/en/getting-started.html

asmjit: vcpkg.exe install asmjit:x64-windows
Zydis: vcpkg.exe install zydis:x64-windows

Использование

imgbefore 1.) Загрузите двоичный файл, нажав «file» в верхнем левом углу.
2.) Добавьте функции, развернув дерево «Functions». (Вы можете выполнить поиск, введя имя в строке поиска вверху)
3.) Нажмите «compile» (примечание: обфускация большого количества функций может занять несколько секунд)

Возможности

В следующей демонстрации все возможности (кроме демонстрируемой) отключены.

Обфускация непосредственных перемещений

Если непосредственное значение перемещается в регистр, мы обфусцируем его, применяя несколько побитовых операций. Рассмотрим популярную функцию _security_init_cookie.
До: imgbefore После: imgafter

Сглаживание потока управления

Удаляя аккуратную структуру программы, сгенерированную компилятором, и помещая наш код в новые сгенерированные блоки, мы увеличиваем сложность программы. Возьмём эту простую функцию main в качестве примера (оптимизация для этой программы отключена):
imgmain
Если мы передадим это в IDA 7.6, декомпилятор её оптимизирует:
imgmainnoobf
Теперь сгладим её поток управления и снова проанализируем в IDA:
imgmainobf
Как видите, сложность значительно возросла, хотя я показываю лишь небольшую часть сгенерированного кода. Если хотите увидеть, как выглядит граф потока управления: imgmaincfg

Мутация ADD

Если регистр (например, RAX) добавляется к другому регистру (например, RCX), мы мутируем инструкцию. Это означает, что синтаксис изменяется, но семантика остаётся прежней. Инструкция ADD RCX, RAX может быть мутирована в:

root@kitploit:~
push rax
not rax
sub rcx, rax
pop rax
sub rcx, 1

Если хотите узнать больше о мутации, взгляните на perses.

Обфускация точки входа

Если PE-файл является .exe (поддержка .dll будет добавлена), мы создадим пользовательскую точку входа, которая расшифровывает реальную при запуске (!!! не работает при ручном маппинге).
imgmaincfg

Обфускация LEA

Обфускация LEA довольно проста, но эффективна. Мы помещаем другой адрес в регистр и затем расшифровываем его. Таким образом, реверс-инженеры не могут перекрестно ссылаться на определённые данные/функции.
Допустим, мы находим следующую инструкцию: lea rcx, [0xDEAD]
Мы мутируем её в:

root@kitploit:~
pushf
lea rcx, [1CE54]
sub rcx, EFA7
popf

rcx -> 0xDEAD

Анти-дизассемблирование

Если мы находим инструкцию, начинающуюся с байта 0xFF, мы помещаем перед ней 0xEB.
Мы делаем это, потому что 0xEB 0xFF кодируется как jmp rip + 1, что в итоге переходит к нашему фактическому первому 0xFF. Это сбивает с толку инструменты, декодирующие инструкции линейным образом.
До:
imgffbefore
После:
imgffafter

Время от времени мы можем вставлять:

root@kitploit:~
jz 3
jne 1
0xE8

IDA попытается декодировать 0xE8 (call), но безуспешно:
imgjz

Обфускация импорта

На данный момент нет «правильной» обфускации IAT. Об этом пока заботится трюк анти-дизассемблирования 0xFF. Правильная реализация запланирована здесь:
iat.cpp

Итоговый результат

Это фрагмент нашей функции main со всеми включенными возможностями, кроме анти-дизассемблирования (чтобы IDA могла создать функцию):
imgfinal

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