Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
exrop — Générateur automatisé de chaînes ROP pour binaires x86-64 utilisant l'exécution symbolique. Prend en charge les écritures registre/mémoire, les appels de fonctions, les appels système, l'évitement de caractères interdits, le pivotement de pile et le mode noyau avec réécriture retpoline. | Kitploit
Outils/GitHubGitHub/d4em0n/exrop
Frameworks d'ExploitationGénération de PayloadsRétro-ingénierieCTFExploitation de Binaires
GitHubd4em0n/exrop

exrop

Voir le dépôt
30922il y a 5 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Générateur automatisé de chaînes ROP pour binaires x86-64 utilisant l'exécution symbolique. Prend en charge les écritures registre/mémoire, les appels de fonctions, les appels système, l'évitement de caractères interdits, le pivotement de pile et le mode noyau avec réécriture retpoline.

Partager

Exrop

Générateur automatique de chaînes ROP pour binaires x86-64, propulsé par l'exécution symbolique de Triton.

Fonctionnalités

  • Définir des registres à des constantes ou d'autres registres (rdi=0x41414141, rdi=rax)
  • Écrire en mémoire (adresses/valeurs constantes ou basées sur des registres)
  • Écrire des chaînes/octets en mémoire
  • Appels de fonctions avec des arguments mixtes constantes/registres/chaînes (open("/etc/passwd", 0))
  • Chaînes d'appels système
  • Évitement de caractères interdits
  • Support des gadgets sans retour (jmp reg, call reg)
  • Pivotement de pile avec recherche de chaîne JOP pour les exploits noyau
  • Mode noyau avec réécriture automatique des thunks retpoline
  • Mode clean-only pour filtrer les gadgets ayant des écritures mémoire dangereuses avec effets de bord
  • Composition basée sur les suffixes : gadgets multi-instructions construits à partir de suffixes déjà analysés
  • Analyse multiprocessus des gadgets avec barre de progression
  • Mise en cache des gadgets (pickle) pour une réutilisation rapide

Installation

pip (recommandé)

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

Ceci installe exrop et ses dépendances Python (pyelftools, ROPGadget, triton-library).

Note : Le paquet pip triton-library peut ne pas fonctionner sur toutes les plateformes. Si l'installation échoue, construisez Triton depuis les sources et installez exrop sans la dépendance Triton :

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

Pour le développement (installation éditable avec les dépendances de test) :

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

Manuel

  1. Installez Python 3.6+
  2. Installez Triton
  3. Installez ROPGadget
  4. Optionnel : installez Keystone (nécessaire uniquement pour les tests)
  5. Clonez ce dépôt et ajoutez-le à votre chemin Python :
    root@kitploit:~
    git clone https://github.com/d4em0n/exrop.git
    export PYTHONPATH=/path/to/exrop:$PYTHONPATH
    

Démarrage rapide

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()

Sortie :

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

Mode noyau

Pour les noyaux Linux avec les mitigations retpoline, kernel_mode=True détecte automatiquement les symboles thunk, réécrit les gadgets et se limite à la section .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)

Interface en ligne de commande exkrop

La commande exkrop fournit un workflow interactif pour la génération de chaînes ROP noyau avec sélection de pivot et sortie en code C :

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

Fonctionnalités : modèles d'exploit (élévation de privilèges, écrasement de core_pattern), sortie relative à KASLR, navigateur de gadgets pivot, gestion des décalages réservés et génération de code C. Voir exkrop/README.md pour plus de détails.

Exemple espace utilisateur : 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()

Plus d'exemples dans le répertoire examples/.

Télécharger l’outil