Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
exrop — Generador automatizado de cadenas ROP para binarios x86-64 mediante ejecución simbólica. Compatible con escrituras en registros/memoria, llamadas a funciones, syscalls, evitación de badchars, stack pivoting y modo kernel con reescritura de retpoline. | Kitploit
Herramientas/GitHubGitHub/d4em0n/exrop
Frameworks de ExploitsGeneración de PayloadsIngeniería InversaCTFExplotación de Binarios
GitHubd4em0n/exrop

exrop

Generador automatizado de cadenas ROP para binarios x86-64 mediante ejecución simbólica. Compatible con escrituras en registros/memoria, llamadas a funciones, syscalls, evitación de badchars, stack pivoting y modo kernel con reescritura de retpoline.

Ver Repositorio
30922hace 5 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Exrop

Generador automático de cadenas ROP para binarios x86-64, impulsado por la ejecución simbólica de Triton.

Características

  • Establecer registros a constantes u otros registros (rdi=0x41414141, rdi=rax)
  • Escribir en memoria (direcciones/valores basados en constantes y registros)
  • Escribir cadenas/bytes en memoria
  • Llamadas a funciones con argumentos mixtos de constantes/registros/cadenas (open("/etc/passwd", 0))
  • Cadenas de syscall
  • Evitación de caracteres no deseados (badchar)
  • Soporte de gadgets sin retorno (jmp reg, call reg)
  • Pivoteo de pila con búsqueda de cadenas JOP para exploits de kernel
  • Modo kernel con reescritura automática de thunk retpoline
  • Modo solo limpio para filtrar gadgets con escrituras de memoria de efectos secundarios peligrosos
  • Composición basada en sufijos: gadgets de múltiples instrucciones construidos a partir de sufijos ya analizados
  • Análisis de gadgets multiprocesamiento con barra de progreso
  • Caché de gadgets (pickle) para reutilización rápida

Instalación

pip (recomendado)

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

Esto instala exrop y sus dependencias Python (pyelftools, ROPGadget, triton-library).

Nota: El paquete pip triton-library puede no funcionar en todas las plataformas. Si la instalación falla, construye Triton desde el código fuente e instala exrop sin la dependencia de Triton:

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

Para desarrollo (instalación editable con dependencias de prueba):

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

Manual

  1. Instala Python 3.6+
  2. Instala Triton
  3. Instala ROPGadget
  4. Opcional: instala Keystone (solo necesario para pruebas)
  5. Clona este repositorio y agrégalo a tu PYTHONPATH:
    root@kitploit:~
    git clone https://github.com/d4em0n/exrop.git
    export PYTHONPATH=/path/to/exrop:$PYTHONPATH
    

Inicio rápido

root@kitploit:~
from Exrop import Exrop

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

# Set registers
chain = rop.set_regs({'rdi': 0x41414141, 'rsi': 0x42424242, 'rdx': 0x43434343})
chain.dump()

# Write to memory
chain = rop.set_writes({0x41414141: 0xdeadbeefff, 0x43434343: 0x00110011})
chain.dump()

# Write string to memory
chain = rop.set_string({0x41414141: "Hello world!\n"})
chain.dump()

# Function call
chain = rop.func_call(0x41414141, (0x20, 0x30, "Hello"), 0x7fffff00)
chain.dump()

Salida:

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

Modo Kernel

Para kernels de Linux con mitigaciones retpoline, kernel_mode=True detecta automáticamente los símbolos thunk, reescribe gadgets y se restringe a la sección .text:

root@kitploit:~
from Exrop import Exrop

rop = Exrop("/path/to/vmlinux")
rop.find_gadgets(cache=True, kernel_mode=True)
rop.clean_only = True  # exclude gadgets with dangerous side-effect writes

# Set registers
chain = rop.set_regs({'rdi': 0x41414141, 'rsi': 0})
chain.dump()

# Find pivot gadgets (direct, JOP-chained, indirect)
pivots = rop.stack_pivot_reg('rdi')
for p in pivots[:5]:
    p.dump()

# Build payload for a pivot
payload = pivots[0].build_payload(chain)

CLI de exkrop

El comando exkrop proporciona un flujo de trabajo interactivo para la generación de cadenas ROP de kernel con selección de pivote y salida de código C:

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

Características: plantillas de exploit (privesc, sobrescritura de core_pattern), salida relativa a KASLR, navegador de gadgets pivote, manejo de offsets reservados y generación de código C. Consulta exkrop/README.md para más detalles.

Ejemplo de espacio de usuario: 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()

Más ejemplos en el directorio examples/.

Descargar herramienta