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

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

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

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

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

Категории

Все категории
Loading categories
exrop — Автоматический генератор ROP-цепочек для x86-64 бинарных файлов, использующий символьное выполнение. Поддерживает запись в регистры/память, вызовы функций, системные вызовы, обход badchar, переключение стека (stack pivoting) и режим ядра с перезаписью retpoline. | Kitploit
Инструменты/GitHubGitHub/d4em0n/exrop
Фреймворки для эксплойтовГенерация полезной нагрузкиОбратная инженерияCTFЭксплуатация Бинарных Файлов
GitHubd4em0n/exrop

exrop

Автоматический генератор ROP-цепочек для x86-64 бинарных файлов, использующий символьное выполнение. Поддерживает запись в регистры/память, вызовы функций, системные вызовы, обход badchar, переключение стека (stack pivoting) и режим ядра с перезаписью retpoline.

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

Популярное

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

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

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

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

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

Exrop

Автоматический генератор ROP-цепочек для x86-64 бинарных файлов, работающий на основе символьного выполнения Triton.

Возможности

  • Установка регистров в константы или другие регистры (rdi=0x41414141, rdi=rax)
  • Запись в память (адреса/значения на основе констант и регистров)
  • Запись строк/байтов в память
  • Вызовы функций со смешанными аргументами (константы/регистры/строки) (open("/etc/passwd", 0))
  • Цепочки системных вызовов
  • Исключение запрещённых символов
  • Поддержка гаджетов без возврата (jmp reg, call reg)
  • Перестановка стека с поиском JOP-цепочек для эксплойтов ядра
  • Режим ядра с автоматической заменой thunk-функций retpoline
  • Режим «только чистые» для фильтрации гаджетов с опасными побочными эффектами записи в память
  • Композиция на основе суффиксов: многоинструкционные гаджеты, построенные из уже проанализированных суффиксов
  • Многопроцессорный анализ гаджетов с индикатором прогресса
  • Кэширование гаджетов (pickle) для быстрого повторного использования

Установка

pip (рекомендуется)

root@kitploit:~
pip install git+https://github.com/d4em0n/exrop.git

Эта команда устанавливает exrop и его зависимости Python (pyelftools, ROPGadget, triton-library).

Примечание: Пакет pip triton-library может не работать на всех платформах. Если установка не удалась, соберите Triton из исходников и установите exrop без зависимости от Triton:

root@kitploit:~
pip install --no-deps git+https://github.com/d4em0n/exrop.git
pip install pyelftools ROPGadget

Для разработки (редактируемая установка с тестовыми зависимостями):

root@kitploit:~
git clone https://github.com/d4em0n/exrop.git
cd exrop
pip install -e ".[dev]"

Вручную

  1. Установите Python 3.6+
  2. Установите Triton
  3. Установите ROPGadget
  4. Опционально: установите Keystone (требуется только для тестов)
  5. Клонируйте этот репозиторий и добавьте его в ваш PYTHONPATH:
    root@kitploit:~
    git clone https://github.com/d4em0n/exrop.git
    export PYTHONPATH=/path/to/exrop:$PYTHONPATH
    

Быстрый старт

root@kitploit:~
from Exrop import Exrop

rop = Exrop("/bin/ls")
rop.find_gadgets(cache=True)

# Установка регистров
chain = rop.set_regs({'rdi': 0x41414141, 'rsi': 0x42424242, 'rdx': 0x43434343})
chain.dump()

# Запись в память
chain = rop.set_writes({0x41414141: 0xdeadbeefff, 0x43434343: 0x00110011})
chain.dump()

# Запись строки в память
chain = rop.set_string({0x41414141: "Hello world!\n"})
chain.dump()

# Вызов функции
chain = rop.func_call(0x41414141, (0x20, 0x30, "Hello"), 0x7fffff00)
chain.dump()

Вывод:

root@kitploit:~
$RSP+0x0000 : 0x00000000000060d0 # pop rbx; ret
$RSP+0x0008 : 0x0000000044444444
$RSP+0x0010 : 0x0000000000014852 # mov rax, rbx; pop rbx; ret
$RSP+0x0018 : 0x0000000000000000
$RSP+0x0020 : 0x0000000000004ce5 # pop rdi; ret
$RSP+0x0028 : 0x0000000041414141
$RSP+0x0030 : 0x000000000000629c # pop rsi; ret
$RSP+0x0038 : 0x0000000042424242
$RSP+0x0040 : 0x0000000000003a62 # pop rdx; ret
$RSP+0x0048 : 0x0000000043434343
$RSP+0x0050 : 0x00000000000060d0 # pop rbx; ret
$RSP+0x0058 : 0x0000000045454545

Режим ядра

Для ядер Linux с защитой retpoline режим kernel_mode=True автоматически обнаруживает символы thunk, переписывает гаджеты и ограничивает работу секцией .text:

root@kitploit:~
from Exrop import Exrop

rop = Exrop("/path/to/vmlinux")
rop.find_gadgets(cache=True, kernel_mode=True)
rop.clean_only = True  # исключить гаджеты с опасными побочными эффектами записи

# Установка регистров
chain = rop.set_regs({'rdi': 0x41414141, 'rsi': 0})
chain.dump()

# Поиск гаджетов pivot (прямых, JOP-цепочек, косвенных)
pivots = rop.stack_pivot_reg('rdi')
for p in pivots[:5]:
    p.dump()

# Сборка полезной нагрузки для pivot
payload = pivots[0].build_payload(chain)

CLI exkrop

Команда exkrop предоставляет интерактивный рабочий процесс для генерации ROP-цепочек ядра с выбором pivot и выводом кода на C:

root@kitploit:~
exkrop <vmlinux>
# или: python3 -m exkrop <vmlinux>

Возможности: шаблоны эксплойтов (privesc, перезапись core_pattern), вывод с учётом KASLR, просмотр гаджетов pivot, обработка зарезервированных смещений и генерация кода на C. Подробнее см. в exkrop/README.md.

Пример в пользовательском пространстве: open-read-write

root@kitploit:~
from pwn import *
from Exrop import Exrop

libc = ELF("/lib/x86_64-linux-gnu/libc.so.6", checksec=False)
rop = Exrop(libc.path)
rop.find_gadgets(cache=True)

bss = libc.bss()

chain = rop.func_call(libc.symbols['open'], ("/etc/passwd", 0), bss)
chain.set_base_addr(0x00007ffff79e4000)
chain.dump()

chain = rop.func_call(libc.symbols['read'], ('rax', bss, 0x100))
chain.set_base_addr(0x00007ffff79e4000)
chain.dump()

chain = rop.func_call(libc.symbols['write'], (1, bss, 0x100))
chain.set_base_addr(0x00007ffff79e4000)
chain.dump()

Больше примеров в каталоге examples/.

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