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
ropfuscator — ROPfuscator is a fine-grained code obfuscation framework for C/C++ programs using ROP (return-oriented programming). | Kitploit
Outils/GitHubGitHub/ropfuscator/ropfuscator
Defensive ToolsCode AnalysisExploitationReverse EngineeringBinary Analysis
GitHubropfuscator/ropfuscator

ropfuscator

ROPfuscator is a fine-grained code obfuscation framework for C/C++ programs using ROP (return-oriented programming).

Voir le dépôt
44533il y a 2 ansVé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 →
Partager

Avertissement

ROPfuscator est une preuve de concept de recherche et n'est pas destiné à une utilisation en production. Les auteurs déclinent toute responsabilité quant à l'utilisation du logiciel. Veuillez faire preuve de prudence et l'utiliser à vos propres risques.


ROPfuscator Build

logo

ROPfuscator est un framework d'obfuscation de code à grain fin pour les langages supportés par LLVM, reposant sur la ROP (return-oriented programming). ROPfuscator obfusque un programme au niveau du code assembleur en transformant les instructions classiques en chaînes ROP, contrecarrant notre conception naturelle du flux de contrôle normal. Il est implémenté comme une extension du backend x86 de LLVM (10.0.1).

Pour la compilation, l'utilisation et l'implémentation, consultez les documents suivants :

  • Compiler ROPfuscator : build.md
  • Utiliser ROPfuscator pour obfusquer des programmes : usage.md
  • Détails de l'algorithme d'obfuscation : algorithm.md
  • Détails d'implémentation : implementation.md

Article de recherche


Lire l'article ici
root@kitploit:~
@inproceedings{depasquale2023ropfuscator,
  title={ROPfuscator: Robust Obfuscation with ROP},
  author={De Pasquale, Giulio and Nakanishi, Fukutomo and Ferla, Daniele and Cavallaro, Lorenzo},
  booktitle={2023 IEEE Security and Privacy Workshops (SPW)},
  pages={1--10},
  year={2023},
  organization={IEEE}
}

Améliorations clés

Ce projet vise à fournir une version améliorée de ROPfuscator avec un fort accent sur la reproductibilité et la facilité d'intégration. Nous avons apporté plusieurs améliorations clés dans ce dépôt, comme indiqué ci-dessous.

Gestionnaire de paquets Nix

ROPfuscator exploite désormais Nix, un gestionnaire de paquets déclaratif et puissant qui permet des builds fiables et reproductibles. Nix offre plusieurs avantages :

  • Garantit la cohérence des dépendances et des environnements de build entre les systèmes.
  • Permet des environnements de build isolés, éliminant les conflits avec d'autres paquets installés.
  • Prend en charge les retours arrière vers les versions précédentes des paquets, ce qui facilite la récupération après des mises à jour échouées.

ROPfuscator fournit un flake Nix exposant les stdenv de ROPfuscator et diverses fonctions d'aide utilisées pour compiler nativement des dérivations Nix, sans appliquer aucune modification au système de build du projet à construire.

Processus d'évaluation

Le processus d'évaluation a été entièrement réécrit, en tirant pleinement parti du gestionnaire de paquets Nix. Cela garantit une évaluation plus fiable et transparente, qui servira de base aux futurs travaux sur ROPfuscator.

Obfuscation transparente des paquets Nix amont

ROPfuscator peut désormais tenter d'obfusquer de manière transparente n'importe quel paquet présent dans le dépôt de paquets Nix amont, nixpkgs, sans nécessiter de modifications. Cela permet aux utilisateurs de Nix d'intégrer ROPfuscator de manière transparente dans leurs flux de travail existants et de tester ses capacités.

ROPfuscator peut cibler un seul projet, en n'obfusquant que les fichiers objets pertinents pour le projet lui-même, ou il peut obfusquer la cible ainsi que toutes ses dépendances.


Pour commencer

Utiliser Nix (recommandé)

Étape 0 : Installer Nix

Installez Nix (le gestionnaire de paquets) et assurez-vous que son démon est en cours d'exécution.

Étape 1 : Activer l'utilisation des Flakes dans Nix

Les Flakes vous permettent de spécifier les dépendances de votre code de manière déclarative et de définir facilement les entrées et sorties des projets. ROPfuscator expose différentes sorties, nous devons donc activer l'utilisation des Flakes dans Nix.

Voici une procédure pas à pas pour les activer.

Étape 2 : Ajouter le dépôt de cache ROPfuscator aux canaux de Nix (facultatif)

Cette étape permet de tirer parti du dépôt de cache de ROPfuscator pour éviter de recompiler le projet et toutes ses dépendances à partir de zéro. Cette étape est facultative mais recommandée.

Pour activer le cache de ROPfuscator, installez d'abord cachix :

root@kitploit:~
nix-env -iA cachix -f https://cachix.org/api/v1/install

Ensuite, configurez nix.conf pour utiliser le cache binaire :

root@kitploit:~
cachix use ropfuscator

Étape 3 : Compiler et utiliser ROPfuscator

La dernière étape consiste à compiler ROPfuscator. Cela peut être fait en exécutant :

root@kitploit:~
nix build github:ropfuscator/ropfuscator -L

Si vous souhaitez ouvrir un shell configuré pour utiliser ROPfuscator par défaut, exécutez simplement :

root@kitploit:~
nix shell github:ropfuscator/ropfuscator

ROPfuscator peut être utilisé pour obfusquer des paquets présents dans le dépôt Nixpkgs. Actuellement, nous utilisons un fork personnalisé car certains paquets amont n'étaient pas correctement configurés pour la compilation croisée. Bien que nous ayons déjà soumis certains correctifs en amont, il reste encore du travail à faire pour une expérience sans faille.

Pour commencer, suivez les deux premières étapes ci-dessus et installez Nix. Ensuite, copiez flake-example.nix dans un répertoire en le renommant flake.nix :

root@kitploit:~
 mkdir -p ropfuscator-example && cd ropfuscator-example
 cp ../flake-example.nix flake.nix

À ce stade, vous pouvez compiler les deux paquets définis dans le flake : hello et obfuscatedHello.

Pour compiler obfuscatedHello, utilisez :

root@kitploit:~
 nix build .#obfuscatedHello -L

De même, pour compiler hello, exécutez :

root@kitploit:~
 nix build .#hello -L

Aperçu de ROPfuscator

architecture

Nous combinons les couches d'obfuscation suivantes pour obtenir une obfuscation robuste face à plusieurs attaques.

  • Transformation ROP
    • Convertit chaque instruction en un ou plusieurs gadgets ROP, et traduit l'ensemble du code en chaînes ROP.
  • Insertion de prédicats opaques
    • Traduit les adresses de gadgets ROP et les valeurs poussées sur la pile en constantes opaques, qui sont une composition de plusieurs prédicats opaques.

Configurations

ROPfuscator peut être configuré via des fichiers de configuration TOML. Ce dépôt contient les configurations prêtes à l'emploi suivantes :

  • ROP Only : n'obfusque pas les adresses de gadgets, les valeurs de pile, les opérandes immédiates ou les cibles de branchement, et n'utilise pas de prédicats opaques.
  • All Addresses : obfusque toutes les adresses de gadgets et utilise des prédicats opaques pour toutes les constantes opaques.
  • Half addresses : obfusque 50 % des adresses de gadgets et utilise des prédicats opaques pour toutes les constantes opaques.
  • Full : obfusque toutes les adresses de gadgets, les valeurs de pile, les opérandes immédiates et les cibles de branchement, et utilise des prédicats opaques pour toutes les constantes opaques.

Chaque configuration peut être personnalisée à l'aide des options disponibles dans le tableau de configuration du README.

Limitations

  • Les binaires Linux x86 32 bits sont la seule cible prise en charge (pour l'instant)
  • Pour le détail des limitations, consultez limitation.md.

Vous souhaitez travailler sur ROPfuscator ?

Nous encourageons la collaboration et sommes ouverts à discuter d'extensions ou d'améliorations potentielles du projet. Si vous êtes intéressé(e) par une contribution, n'hésitez pas à nous contacter ou à ouvrir une issue.

Merci pour votre soutien !

Télécharger l’outil