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

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

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

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

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

Категории

Все категории
Loading categories
SHGenOb — Инструмент на Python для генерации Shellcode из PIC C | Kitploit
Инструменты/GitHubGitHub/oldboy21/shgenob
Инструменты шифрования/дешифрованияГенерация полезной нагрузкиЭксплуатацияШелл-кодАнализ вредоносных программАнализ Бинарных ФайловОбучение и ОбразованиеГенерация Шеллкода
GitHuboldboy21/shgenob

SHGenOb

Инструмент на Python для генерации Shellcode из PIC C

Репозиторий
4359 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

SHGenOB: Генератор шеллкода из C-кода PIC

Введение

SHGenOB — это инструмент на Python, предназначенный для генерации шеллкода из позиционно-независимого кода (PIC), написанного на C. Он автоматизирует процесс компиляции C-кода, извлечения секции .text и, при необходимости, шифрования полученного шеллкода с помощью XOR-шифрования.

Этот проект полностью основан на этом материале от hasherezade.

Позиционно-независимый код (PIC)

Важное примечание для пользователей SHGenOB: Чтобы этот инструмент генерации шеллкода работал корректно, C-код во входном файле должен быть написан как позиционно-независимый код (PIC). Инструмент предполагает, что предоставленный код соответствует принципам и характеристикам PIC, описанным ниже.

Позиционно-независимый код (PIC) — это тип машинного кода, который может выполняться независимо от его абсолютного адреса в памяти. Эта характеристика делает PIC особенно полезным при создании шеллкода, разделяемых библиотек и некоторых видов вредоносного ПО. Ключевые особенности PIC включают:

  • Независимость от адреса: PIC может корректно выполняться независимо от того, куда он загружен в память.
  • Отсутствие фиксированных ссылок на память: Он избегает использования абсолютных адресов, полагаясь вместо этого на относительную адресацию или другие методы для ссылок на области памяти.
  • Самодостаточность: PIC обычно включает все необходимые данные внутри самого кода, уменьшая внешние зависимости.
  • Стек-строки: Объявление строк как массивов символов вынуждает компилятор помещать их в стек, а не в секцию .data или .pdata PE-файла.
  • Без перемещений (Relocation-Free): Он не требует от загрузчика выполнения перемещений, что ускоряет загрузку и выполнение.
  • Меньший размер: PIC часто приводит к меньшему размеру бинарного файла по сравнению с кодом, зависящим от адреса.
  • Адресация относительно регистров: Для доступа к данным и выполнения переходов часто используется адресация относительно регистров.
  • Использование смещений: Вместо абсолютных адресов PIC использует смещения от текущего указателя инструкций.
  • Платформозависимые методы: Разные архитектуры CPU могут требовать разных методов для достижения позиционной независимости.

PIC необходим в сценариях, где точный адрес загрузки кода заранее неизвестен, что делает его ключевой концепцией в разработке шеллкода и некоторых областях системного программирования. При использовании SHGenOB убедитесь, что ваш входной C-код соответствует этим принципам PIC, чтобы генерировать эффективный и надежный шеллкод.

Возможности

  • Компиляция PIC C-кода с использованием инструментов Microsoft Visual Studio
  • Извлечение секции .text из скомпилированного исполняемого файла
  • Опциональное шифрование шеллкода с помощью XOR-шифрования
  • Вставка сгенерированного шеллкода в шаблон загрузчика
  • Компиляция и тестирование загрузчика со сгенерированным шеллкодом
  • Поддержка режима отладки для просмотра промежуточных файлов
  • Очистка промежуточных файлов после успешного выполнения

Требования

  • Операционная система Windows
  • Python 3.6 или выше
  • Microsoft Visual Studio 2022 Community Edition (или совместимая версия)
  • Следующие пакеты Python:
    • pefile
    • argparse
  • Компилятор C (cl.exe) и ассемблер (ml64.exe) из Visual Studio
  • Файл vcvars64.bat из Visual Studio (для настройки среды компиляции)

Установка

  1. Установите Python 3.6 или выше с python.org
  2. Установите Microsoft Visual Studio 2022 Community Edition
  3. Установите требуемые пакеты Python:

pip install pefile argparse

  1. Клонируйте или скачайте этот репозиторий на свой локальный компьютер

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

Запустите скрипт из командной строки со следующим синтаксисом:

root@kitploit:~
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]

Аргументы:

  • --code-file или -cf: (Обязательный) Путь к файлу main.c, содержащему PIC-код
  • --masm-file или -mf: (Необязательный) Путь к внешнему .masm файлу для включения дополнительной ассемблерной логики в шеллкод
  • --debug или -d: (Необязательный) Включить режим отладки (пропускает очистку промежуточных файлов)
  • --xor-key или -xk: (Необязательный) XOR-ключ для шифрования шеллкода (формат: AA,BB,CC)

Примеры:

root@kitploit:~
# Базовое использование
python shgenob.py --code-file main.c

# С внешним MASM-файлом
python shgenob.py --code-file main.c --masm-file custom_logic.masm

# Со всеми опциями
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC

Описание функций

  1. save_to_file(content, filename): Сохраняет переданное содержимое в файл в текущем каталоге
  2. cleanup(): Удаляет промежуточные файлы (.asm, .exe, .obj, .lnk) в текущем каталоге
  3. xor_encrypt(shellcode, key): Шифрует шеллкод с помощью XOR с использованием переданного ключа
  4. insert_shellcode_into_loader(formatted_shellcode, loader_file): Вставляет шеллкод в шаблон загрузчика
  5. extract_text_section(file_path, key): Извлекает секцию .text из PE-файла и опционально шифрует её
  6. find_file(root_dir, file_name): Ищет файл в указанном каталоге и его подкаталогах
  7. run_command_with_vcvars(command, vcvars_path): Выполняет команду с установленными переменными окружения Visual Studio
  8. compile_cpp_file(cpp_file, vcvars_path, output_exe): Компилирует C++ файл с помощью компилятора Visual Studio
  9. modify_asm_file(asm_file): Модифицирует сгенерированный ассемблерный файл для совместимости с шеллкодом
  10. main(cpp_file, args): Главная функция, которая управляет процессом генерации шеллкода

Порядок работы

  1. Разбор аргументов командной строки
  2. Поиск инструментов Visual Studio (vcvars64.bat, cl.exe, ml64.exe)
  3. Компиляция входного C-файла в ассемблер
  4. Модификация сгенерированного ассемблерного файла
  5. Сборка модифицированного ассемблерного файла
  6. Извлечение секции .text из полученного исполняемого файла
  7. Опциональное шифрование извлеченного шеллкода
  8. Сохранение шеллкода в файл
  9. Вставка шеллкода в шаблон загрузчика
  10. Компиляция загрузчика
  11. Тестирование загрузчика со сгенерированным шеллкодом
  12. Очистка промежуточных файлов (если не включен режим отладки)

Отладка

Используйте флаг --debug, чтобы пропустить процесс очистки и просмотреть промежуточные файлы. Это полезно для поиска и устранения неполадок и понимания процесса генерации шеллкода.

Вопросы безопасности

  • Этот инструмент предназначен только для образовательных целей и авторизованного тестирования
  • Сгенерированный шеллкод может быть обнаружен антивирусным программным обеспечением
  • Используйте шифрование (XOR-ключ) для обфускации шеллкода, но учтите, что это базовая форма обфускации
  • Убедитесь, что у вас есть разрешение на использование этого инструмента на целевых системах

Ограничения

  • В настоящее время поддерживаются только Windows и набор инструментов Microsoft Visual Studio
  • Ограниченная обработка ошибок для некоторых пограничных случаев
  • XOR-шифрование — это базовая форма обфускации, которая может быть недостаточной для всех случаев использования

Участие в разработке

Вклад в улучшение SHGenOB приветствуется. Пожалуйста, выполните следующие шаги:

  1. Сделайте форк репозитория
  2. Создайте новую ветку для вашей функции
  3. Зафиксируйте ваши изменения
  4. Отправьте изменения в ветку
  5. Создайте новый Pull Request
Скачать инструмент