
prend des shellcode bad-bytes et les bannit, renvoyant du shellcode nettoyé avec des fonctionnalités préservées
LE BANISSEUR DE BAD-BYTES DE SHELLCODE
Aperçu • Démarrage rapide • TUI interactif • Élimination ciblée des bad-bytes • Profils de bad-bytes • Fonctionnalités • Architecture • Configuration requise • Dépendances • Compilation • Installation • Utilisation • Stratégies d'obfuscation • Stratégies de dénulification • Apprentissage ML • Ménagerie d'agents • Développement • Dépannage • Licence
byvalver est un outil en ligne de commande écrit en C pour éliminer automatiquement (ou « bannir ») les bad-bytes du shellcode x86/x64/ARM/ARM64 tout en conservant une équivalence fonctionnelle complète.
NOUVEAUTÉ v4.0 : Support multi-architecture
--archCorrectifs v4.0.1 :
can_handle de la stratégie ARM64 pour les stratégies de passageNOUVEAUTÉ v4.2 : Support x64 amélioré
is_64bit_register(), is_extended_register(), build_rex_prefix()L'outil utilise le framework de désassemblage Capstone pour analyser les instructions et applique plus de 175 stratégies de transformation classées pour remplacer le code contenant des bad-bytes par des alternatives équivalentes.
Le framework générique de bannissement des bad-bytes offre 2 modes d'utilisation :
--bad-bytes permet de spécifier les octets arbitraires à bannir (ex. --bad-bytes "00,0a,0d" pour un shellcode compatible saut de ligne)--profile utilise des ensembles de bad-bytes préconfigurés pour des scénarios d'exploitation courants (ex. --profile http-newline, --profile sql-injection, --profile alphanumeric-only)Supporte Windows, Linux et macOS.
TECHNIQUE CŒUR :
C pur pour l'efficacité et le contrôle bas niveauCapstone pour un désassemblage précisNASM pour générer les stubs de décodage[!NOTE] Élimination des octets nuls (
--bad-bytes "00"ou par défaut) : BIEN TESTÉE / Élimination générique des bad-bytes (--bad-bytes "00,0a,0d"etc.) : NOUVELLEMENT IMPLÉMENTÉE
Commencez avec byvalver en quelques minutes :
OPTION 1 : DEPUIS GITHUB (RECOMMANDÉ)```bash curl -sSL https://raw.githubusercontent.com/umpolungfish/byvalver/main/install.sh | bash
**OPTION 2 : CONSTRUIRE À PARTIR DE LA SOURCE**```bash
git clone https://github.com/umpolungfish/byvalver.git
cd byvalver
make
sudo make install
sudo make install-man # Install man page
banish NULL BYTES (DEFAULT):```bash byvalver input.bin output.bin
**UTILISATION DE PROFILS BAD-BYTE:**```bash
# HTTP contexts (removes null, newline, carriage return)
byvalver --profile http-newline input.bin output.bin
# SQL injection contexts
byvalver --profile sql-injection input.bin output.bin
# Alphanumeric-only shellcode (most restrictive)
byvalver --profile alphanumeric-only input.bin output.bin
SPÉCIFICATION MANUELLE DES BAD-BYTES:```bash
byvalver --bad-bytes "00,0a,0d" input.bin output.bin
**FONCTIONNALITÉS AVANCÉES:**```bash
# Add obfuscation layer before denullification
byvalver --biphasic input.bin output.bin
# Enable ML-powered strategy selection
byvalver --ml input.bin output.bin
# Generate XOR-encoded shellcode with decoder stub
byvalver --xor-encode DEADBEEF input.bin output.bin
# Output in different formats
byvalver --format c input.bin output.c # C array
byvalver --format python input.bin output.py # Python bytes
byvalver --format hexstring input.bin output.hex # Hex string
Vérifiez toujours votre shellcode transformé:```bash
python3 verify_denulled.py --bad-bytes "00,0a,0d" output.bin
python3 verify_functionality.py input.bin output.bin
### SUPPORT MULTI-ARCHITECTURE
`byvalver` prend en charge plusieurs architectures via le drapeau `--arch` :
**x86 (32-bit Intel/AMD)** - Entièrement pris en charge avec plus de 150 stratégies```bash
byvalver --arch x86 --bad-bytes "00" x86_shellcode.bin output.bin
x64 (64-bit Intel/AMD) - Entièrement pris en charge (par défaut)```bash byvalver --arch x64 --bad-bytes "00,0a,0d" x64_shellcode.bin output.bin
**ARM (32-bit)** - Support expérimental avec des stratégies de base```bash
byvalver --arch arm --bad-bytes "00" arm_shellcode.bin output.bin
ARM64 (AArch64) - Support expérimental avec des stratégies de base```bash byvalver --arch arm64 --bad-bytes "00,0a" arm64_shellcode.bin output.bin
**Notes:**
- ARM/ARM64 support focuses on core instructions (MOV, arithmetic, loads/stores)
- Utilisez des profils de bad-byte plus simples pour ARM (par exemple, uniquement le null-byte)
- Des avertissements expérimentaux sont affichés lorsque ARM/ARM64 est sélectionné
- Une détection de base de non-concordance d'architecture avertit si le shellcode semble être d'une mauvaise architecture
- La détection automatique d'architecture est prévue pour les futures versions
### TRAITEMENT PAR LOTS
Traitez des répertoires entiers :```bash
# Process all .bin files recursively
byvalver -r --pattern "*.bin" input_dir/ output_dir/
# Apply HTTP profile to all shellcode in directory
byvalver -r --profile http-newline input_dir/ output_dir/
byvalver comprend une TUI interactive (interface utilisateur textuelle) avec une parité de fonctionnalités CLI 1:1.
La TUI offre une interface visuelle intuitive pour toutes les opérations de bannissement de bad-byte, y compris :
Lancez la TUI avec le flag --menu :```bash
byvalver --menu
### CARACTÉRISTIQUES PRINCIPALES :
La TUI propose 9x options de menu principal couvrant toutes les fonctionnalités CLI :
1. **Traiter un seul fichier** - Traite des fichiers shellcode individuels avec retour visuel
2. **Traiter un répertoire par lots** - Traite des répertoires entiers avec suivi en direct de la progression
3. **Configurer les options de traitement** - Activer/désactiver le mode biphasique, la génération PIC, le ML, le mode verbeux, l'essai à blanc
4. **Définir les bad bytes** - Saisie manuelle ou sélection parmi 13 profils prédéfinis
5. **Paramètres du format de sortie** - Choisir parmi 5 formats de sortie (raw, C, Python, PowerShell, hexstring)
6. **Configuration des métriques ML** - Configurer la sélection de stratégie ML et le suivi des métriques
7. **Options avancées** - Codage XOR, délais d'attente, limites, paramètres de validation
8. **Charger/Sauvegarder la configuration** - Gestion des fichiers de configuration de type INI
9. **À propos de byvalver** - Informations sur la version et l'aide
### NAVIGATEUR DE FICHIERS VISUEL :
- **Navigation dans les répertoires** avec les touches fléchées ou les touches j/k de style vi
- **Distinction fichier/répertoire** avec les indicateurs [FILE] et [DIR]
- **Affichage de la taille des fichiers** avec des formats lisibles (B, KB, MB, GB)
- **Filtrage par extension** (p. ex., *.bin)
- **Gestion intelligente des chemins** - Navigue automatiquement vers le répertoire parent si un chemin de fichier est fourni
- **Affichage trié** - Répertoires en premier, puis par ordre alphabétique
- **Modes de sélection multiples** :
- Mode sélection de fichier : Naviguer dans les répertoires, sélectionner uniquement les fichiers
- Mode sélection de répertoire : Sélectionner les répertoires pour le traitement par lots
- Mode les deux : Sélectionner soit des fichiers, soit des répertoires
### TRAITEMENT PAR LOTS AVEC MISES À JOUR EN DIRECT :
L'écran de traitement par lots fournit **un retour en temps réel** :
- **Barre de progression** montrant les fichiers traités (p. ex., `[============== ] 52/100 fichiers`)
- **Affichage de la configuration** montrant les paramètres actifs :
- Nombre de bad bytes et profil utilisé
- Options de traitement (`Biphasic`, `PIC`, `XOR`, ML)
- Format de sortie
- **Statistiques en direct des fichiers** avec statut codé par couleur :
- Terminé : X / Y (fichiers tentés / total)
- ✅ Réussi (VERT) - aucun bad byte restant
- ❌ Échoué (ROUGE) - erreurs ou bad bytes restants
- Pourcentage de taux de réussite
- **Affichage du fichier en cours** en gras
- **Aperçu du fichier suivant** en texte jaune/atténué
- **Tableau dynamique des statistiques de stratégie** montrant :
- **Toutes les stratégies actives** (pas de limite de 10 stratégies)
- **Noms complets des stratégies** (jusqu'à 50 caractères, sans troncature)
- Comptes de succès/échec par stratégie
- Pourcentages de taux de réussite
- Codé par couleur selon la performance (vert ≥80%, jaune 50-79%, rouge <50%)
- Mises à jour en temps réel toutes les 50 ms
### GESTION DE LA CONFIGURATION :
Charger et sauvegarder les configurations au **format de type INI** :```ini
[general]
verbose = 0
quiet = 0
show_stats = 1
[processing]
use_biphasic = 0
use_pic_generation = 0
encode_shellcode = 0
xor_key = 0xDEADBEEF
[output]
output_format = raw
[bad_bytes]
bad_bytes = 00
[ml]
use_ml_strategist = 0
metrics_enabled = 0
[batch]
file_pattern = *.bin
recursive = 0
preserve_structure = 1
Voir example.conf pour un modèle de configuration complet.
2 méthodes de saisie disponibles :
00,0a,0d)Le mode interactif nécessite que la bibliothèque ncurses soit installée sur votre système :```bash
sudo apt install libncurses-dev
sudo dnf install ncurses-devel
brew install ncurses
L'application détectera automatiquement si ncurses est disponible et activera le support TUI en conséquence.
### OPTIONS DE CONSTRUCTION :
Le support TUI est compilé conditionnellement en fonction de la disponibilité de ncurses :
- Construction par défaut : `make` - Inclut TUI si ncurses est disponible
- Forcer la construction TUI : `make with-tui` - Construit avec le support TUI (échoue si ncurses n'est pas disponible)
- Exclure TUI : `make no-tui` - Construit sans support TUI pour un binaire plus petit
### EXEMPLES DE FLUX DE TRAVAIL :
**TRAITEMENT D'UN SEUL FICHIER :**
1. Lancer TUI : `byvalver --menu`
2. Sélectionner "1. Process Single File"
3. Parcourir pour le fichier d'entrée à l'aide du navigateur de fichiers visuel
4. Parcourir pour l'emplacement du fichier de sortie
5. Démarrer le traitement et visualiser les résultats
**TRAITEMENT PAR LOTS :**
1. Lancer TUI : `byvalver --menu`
2. Sélectionner "2. Batch Process Directory"
3. Parcourir pour le répertoire d'entrée contenant les fichiers de shellcode
4. Parcourir pour le répertoire de sortie
5. Configurer le motif de fichier (par défaut : <file>.bin) et l'option récursive
6. Démarrer le traitement par lots et regarder la progression en direct avec les statistiques de stratégies
**GESTION DE CONFIGURATION :**
1. Configurer toutes les options dans le TUI (octets interdits, format de sortie, ML, etc.)
2. Sélectionner "8. Load/Save Configuration"
3. Sauvegarder la configuration actuelle dans un fichier (par exemple, `my_config.conf`)
4. Plus tard : Charger le fichier de configuration pour restaurer tous les paramètres
### NOTES DE PERFORMANCE :
- **Traitement d'un seul fichier** : Retour visuel instantané, <1 seconde pour un shellcode typique
- **Traitement par lots** : Délai de 50 ms entre les fichiers pour les mises à jour visuelles
- **Grands répertoires (100+ fichiers)** : L'analyse peut prendre 1 à 2 secondes
- **Initialisation des stratégies** : 2 à 5 secondes lors de la première exécution (coût unique par session)
### COMPATIBILITÉ TERMINAL :
Le TUI a été testé avec :
- GNOME Terminal
- Konsole
- xterm
- iTerm2 (macOS)
- Windows Terminal (WSL)
- tmux/screen (fonctionne mais peut avoir des limitations de couleurs)
**Taille minimale recommandée du terminal** : 80x24 caractères (100x30 ou plus recommandé pour la table complète des stratégies lors du traitement par lots)
Pour la documentation complète du TUI, le dépannage et l'utilisation avancée, voir [TUI_README.md](https://github.com/umpolungfish/byvalver/blob/HEAD/TUI_README.md).
## BANISSEMENT CIBLÉ DES OCTETS INTERDITS
### APERÇU
L'option `--bad-bytes` vous permet de spécifier n'importe quel ensemble d'octets à bannir de votre shellcode.
### DÉTAILS D'IMPLÉMENTATION
`byvalver` fonctionne en :
1. Analysant la liste d'octets hexadécimaux séparés par des virgules (par exemple, `"00,0a,0d"`)
2. Utilisant une recherche bitmap O(1) pour identifier les octets interdits dans les instructions
3. Appliquant les mêmes 153+ stratégies de transformation utilisées pour l'élimination des octets nuls
4. Vérifiant que la sortie ne contient pas les octets interdits spécifiés
### COMPORTEMENT ATTENDU
- **Octets nuls seulement** (`--bad-bytes "00"` ou par défaut) : Taux de succès élevé (100 % sur le corpus de test)
- **Plusieurs octets interdits** (`--bad-bytes "00,0a,0d"`) : Le taux de succès peut varier considérablement selon :
- Quels octets spécifiques sont marqués comme interdits
- La complexité du shellcode d'entrée
- La fréquence des octets interdits dans le shellcode d'origine
- Si des encodages alternatifs efficaces existent pour l'ensemble spécifique d'octets interdits
### RECOMMANDATIONS
1. **Pour une utilisation en production :** Restez avec le mode de bannissement des octets nuls par défaut
2. **Pour l'expérimentation :** Testez la fonctionnalité `--bad-bytes` avec votre cas d'utilisation spécifique et validez la sortie
3. **Vérifiez toujours :** Utilisez `verify_denulled.py --bad-bytes "XX,YY"` pour confirmer que tous les octets interdits ont été éliminés
4. **Attendez-vous à de la variabilité :** Certains shellcodes peuvent ne pas être entièrement nettoyables avec certains ensembles d'octets interdits
### AMÉLIORATIONS FUTURES
La fonctionnalité générique d'octets interdits fournit une base pour :
- Optimisation des stratégies pour des motifs spécifiques d'octets interdits
- Découverte automatisée de nouvelles stratégies ciblant les combinaisons courantes d'octets interdits
- Réentraînement du modèle ML avec des données d'entraînement diverses d'octets interdits
- Tests et validation étendus
> [!CAUTION]
> L'utilisation de `--bad-bytes` avec plusieurs octets interdits augmente considérablement la complexité de la tâche de transformation. Certains shellcodes peuvent devenir impossibles à transformer si trop d'octets sont marqués comme interdits, car l'outil peut manquer d'encodages alternatifs. Commencez par de petits ensembles d'octets interdits (par exemple, `"00,0a"`) et élargissez progressivement tout en testant la sortie. Vérifiez toujours le résultat avec `verify_denulled.py` avant le déploiement.
## PROFILS D'OCTETS INTERDITS
### APERÇU
Les utilisateurs peuvent également choisir **des profils d'octets interdits** - des ensembles d'octets préconfigurés pour des scénarios d'exploitation courants. Au lieu de spécifier manuellement des valeurs hexadécimales, utilisez des noms de profils qui correspondent à votre contexte.
### PROFILS DISPONIBLES
| Profile | Difficulty | Bad Bytes | Use Case |
|---------|-----------|----------|-----------|
| `null-only` | ░░░░░ Trivial | 1 | Débordements de tampon classiques (par défaut) |
| `http-newline` | █░░░░ Faible | 3 | En-têtes `HTTP`, protocoles basés sur les lignes |
| `http-whitespace` | █░░░░ Faible | 5 | Paramètres `HTTP`, injection de commandes |
| `url-safe` | ███░░ Moyen | 23 | Paramètres `URL`, requêtes `GET` |
| `sql-injection` | ███░░ Moyen | 5 | Contextes d'injection `SQL` |
| `xml-html` | ███░░ Moyen | 6 | Injection `XML`/`HTML`, `XSS` |
| `json-string` | ███░░ Moyen | 34 | Injection d'API `JSON` |
| `format-string` | ███░░ Moyen | 3 | Vulnérabilités de chaîne de format |
| `buffer-overflow` | ███░░ Moyen | 5 | Débordements de pile/tas avec filtrage |
| `command-injection` | ███░░ Moyen | 20 | Injection de commandes shell |
| `ldap-injection` | ███░░ Moyen | 5 | Requêtes `LDAP` |
| `printable-only` | ████░ Élevé | 161 | Protocoles textuels (ASCII imprimable uniquement) |
| `alphanumeric-only` | █████ Extrême | 194 | Shellcode uniquement alphanumérique (0-9, A-Z, a-z) |
### UTILISATION```bash
# List all available profiles
byvalver --list-profiles
# Use a specific profile
byvalver --profile http-newline input.bin output.bin
# Combine with other options
byvalver --profile sql-injection --biphasic --format c input.bin output.c
Contextes HTTP (élimine NULL, LF, CR) :```bash byvalver --profile http-newline payload.bin http_safe.bin
**SQL Injection** (élimine NULL, guillemets, points-virgules):```bash
byvalver --profile sql-injection payload.bin sql_safe.bin
Uniquement alphanumérique (difficulté extrême - autorise uniquement 0-9, A-Z, a-z):```bash byvalver --profile alphanumeric-only payload.bin alphanum.bin
Pour une documentation détaillée des profils, voir [docs/BAD_BYTE_PROFILES.md](https://github.com/umpolungfish/byvalver/blob/HEAD/docs/BAD_BYTE_PROFILES.md).
## FONCTIONNALITÉS
### TAUX DE SUCCÈS ÉLEVÉ DE LA SUPPRESSION DES NULL-BYTE
<div align="center">
<strong>A atteint une suppression à 100% des null-byte sur un corpus de test diversifié représentant des sources nulles communes et complexes.</strong>
</div>
> Ce taux de succès s'applique spécifiquement à l'élimination des null-byte (`\x00`), qui a été largement testée et optimisée.
### MOTEUR DE TRANSFORMATION AVANCÉ
170+ implémentations de stratégies couvrant pratiquement toutes les sources de null-byte courantes et les motifs de bad-byte généraux (plusieurs nouvelles familles de stratégies ajoutées dans v3.0, v3.6, v3.7, v3.8, v4.0 et v4.1) :
- `CALL/POP` et chargement immédiat basé sur la pile
- Parcours du `PEB` avec résolution d'API par hachage
- Résolution d'API avancée basée sur le hachage avec algorithmes complexes
- Parcours multi-étapes du `PEB` pour le chargement de plusieurs DLL
- `SALC`, `XCHG` et mise à zéro basée sur les drapeaux
- `LEA` pour substitution arithmétique
- `Shift` et construction de valeur arithmétique
- Construction de chaîne multi-`PUSH`
- Construction de structure basée sur la pile pour les structures Windows
- Construction de chaîne basée sur la pile avec motifs avancés
- Réécriture `SIB` et de déplacement
- Gestion du déplacement des sauts conditionnels
- Remappage et chaînage de registres
- `SALC`+`REP STOSB` amélioré pour l'initialisation de tampon
- Transformations avancées d'opérations sur chaînes
- Chaînes de codage d'opérations atomiques
- Codage immédiat basé sur la pile FPU
- Traduction d'octets basée sur table `XLAT`
- Chaînes de conservation de drapeaux `LAHF`/`SAHF`
- **NOUVEAU dans v3.6** : Obfuscation arithmétique `BCD` (`AAM`/`AAD`)
- **NOUVEAU dans v3.6** : Alternatives de cadre de pile `ENTER`/`LEAVE`
- **NOUVEAU dans v3.6** : Comptage de bits `POPCNT`/`LZCNT`/`TZCNT` pour les constantes
- **NOUVEAU dans v3.6** : Chargement immédiat de registres `SIMD` `XMM`
- **NOUVEAU dans v3.6** : Transformations de saut de test zéro `JECXZ`/`JRCXZ`
- **NOUVEAU dans v3.7** : Élimination de bad-byte d'opcode de saut conditionnel (JE/JNE/JG/JL avec mauvais opcodes)
- **NOUVEAU dans v3.7** : Opcodes de transfert registre à registre de bad-byte (alternatives MOV/XCHG)
- **NOUVEAU dans v3.7** : Élimination de bad-byte de pointeur de cadre de pile (alternatives PUSH/POP EBP)
- **NOUVEAU dans v3.7** : Élimination de bad-byte d'octet ModR/M et SIB (combinaisons de registres alternatives)
- **NOUVEAU dans v3.7** : Bad-byte partiel immédiat multi-octet (optimisation de rotation)
- **NOUVEAU dans v3.7** : Bad-byte immédiat d'opération bit à bit (AND/OR/XOR/TEST avec registres)
- **NOUVEAU dans v3.7** : Substitution d'opcode d'un octet (alternatives INC/DEC/PUSH/POP)
- **NOUVEAU dans v3.7** : Bad-byte de préfixe d'instruction chaîne (conversion de préfixe REP en boucle)
- **NOUVEAU dans v3.7** : Bad-byte de préfixe de taille d'opérande (conversion 16-bit à 32-bit)
- **NOUVEAU dans v3.7** : Détection de bad-byte de registre de segment (détection de préfixe FS/GS)
- **NOUVEAU dans v3.8** : Système de génération SIB conscient des profils (élimine l'octet SIB codé en dur 0x20)
- **NOUVEAU dans v3.8** : Corrections critiques pour la gestion des sauts conditionnels et l'optimisation partielle des registres
- **NOUVEAU dans v3.9** : Insertion de NOP polymorphe avec plusieurs équivalents NOP
- **NOUVEAU dans v3.9** : Dépliage de constante pour l'obfuscation de valeur immédiate
- **NOUVEAU dans v3.9** : Obfuscation de renommage de registre avec motifs XCHG
- **NOUVEAU dans v3.9** : Obfuscation de débordement de pile pour les opérations arithmétiques
- **NOUVEAU dans v3.9** : Réorganisation d'instructions avec insertion de NOP
- **NOUVEAU dans v3.9** : Stratégie d'auto-modification à l'exécution (implémentation de base)
- **NOUVEAU dans v3.9** : Génération d'instructions qui se chevauchent
- **NOUVEAU dans v4.0** : Support multi-architecture ARM/ARM64 avec sélection de mode dynamique Capstone
- **NOUVEAU dans v4.0** : Encodage immédiat ARM avec transformations MVN
- **NOUVEAU dans v4.0** : Stratégies ARM MOV (originale, évitement de null basé sur MVN)
- **NOUVEAU dans v4.0** : Stratégies arithmétiques ARM (ADD avec transformations SUB)
- **NOUVEAU dans v4.0** : Stratégies mémoire ARM (passage à travers LDR/STR)
- **NOUVEAU dans v4.0** : Stratégies de branchement ARM (passage à travers B/BL)
- **NOUVEAU dans v4.1** : Chaînes d'accumulation de drapeaux SETcc (élimination de saut conditionnel)
- **NOUVEAU dans v4.1** : Construction polymorphe de valeur immédiate (variantes d'encodage multiples)
- **NOUVEAU dans v4.1** : Optimisation de chaîne de dépendance de registre (motifs multi-instructions)
- **NOUVEAU dans v4.1** : Optimisation d'adressage relatif à RIP (améliorations PIC x64)
- **NOUVEAU dans v4.1** : Adressage mémoire à déplacement négatif (alternatives de déplacement)
- **NOUVEAU dans v4.1** : Entrelacement NOP multi-octet (variantes d'obfuscation NOP)
- **NOUVEAU dans v4.1** : Construction de constante par manipulation de bits (BSWAP, BSF, POPCNT, BMI2)
- **NOUVEAU dans v4.2** : Couche de compatibilité de stratégies x86/x64 (permet 128+ stratégies x86 sur x64)
- **NOUVEAU dans v4.2** : Stratégies immédiates 64-bit MOVABS (MOV REX.W avec construction XOR/ADD)
- **NOUVEAU dans v4.2** : Stratégies de zéro immédiat SBB (SBB AL/AX/EAX, transformation 0)
- **NOUVEAU dans v4.2** : Stratégies de TEST immédiat large (TEST EAX/RAX, imm32 avec opérandes registre)
- **NOUVEAU dans v4.2** : Stratégies d'opération mémoire SSE (élimination de null MOVUPS/MOVAPS/MOVDQU/MOVDQA)
- **NOUVEAU dans v4.2** : Stratégies de déplacement LEA x64 (gestion de grand déplacement avec préfixes REX)
- **NOUVEAU dans v4.2** : Support de registre étendu (utilitaires d'encodage de registre R8-R15)
- Support complet pour `MOV`, `ADD/SUB`, `XOR`, `LEA`, `CMP`, `PUSH`, et plus encore
Le moteur utilise un traitement multi-passes (obfuscation → dénullification) avec des mécanismes de repli robustes pour les cas limites
**AMÉLIORATIONS CRITIQUES v3.8** : Correction multi-stratégie pour le profil http-whitespace
- **Problème** : Les bad-bytes codés en dur ont causé un taux d'échec de 79.1% (125/158 fichiers ont échoué)
- **Causes racines identifiées** :
- 45+ instances d'octet SIB codé en dur 0x20 (SPACE) dans 15 fichiers de stratégie
- Logique centrale de saut conditionnel utilisant des décalages de saut de bad-byte sans validation
- Optimisation partielle de registre écrivant directement des bad-bytes
- Bad-bytes codés en dur supplémentaires dans 5 fichiers de stratégie de priorité ÉLEVÉE
- **Solutions mises en œuvre** :
- Génération SIB centralisée consciente des profils avec repli à 3 niveaux (STANDARD → DISP8 → PUSHPOP)
- Remplissage NOP dynamique pour les décalages de saut conditionnel afin d'éviter les bad-bytes
- Construction intelligente d'octets pour les valeurs de registre partielles par décomposition
- Remplacement systématique des octets codés en dur par des alternatives conscientes des profils
- **Impact** : **79.1% échec → 35.4% échec** (taux de succès : **20.9% → 64.6%**)
- **Fichiers corrigés** : 102 fichiers traitent maintenant avec succès (+69 fichiers, amélioration de 3.09x)
- **Taux de succès des stratégies** :
- Optimisation partielle de registre : 25% → **100%** (12/12 transformations)
- mov_mem_disp_enhanced : 0% → **98.5%** (1605/1629 transformations)
- indirect_call_mem : 0% → **98.5%** (135/137 transformations)
- indirect_jmp_mem : 0% → **98.5%** (134/136 transformations)
- **Performances** : Aucun surcoût grâce à un mise en cache intelligente, augmentation de taille moyenne <2%
### MÉTRIQUES DE PERFORMANCE
Données de performance réelles issues du traitement de 184 échantillons de shellcode divers :```
📊 Batch Processing Statistics:
Success Rate: 184/184 █████████████████████████ 100.00%
Files Processed: 184 █████████████████████████ 100.00%
Failed: 0 ░░░░░░░░░░░░░░░░░░░░░░░░░ 00.00%
Skipped: 0 ░░░░░░░░░░░░░░░░░░░░░░░░░ 00.00%
🧠 ML Strategy Selection Performance:
Processing Speed: Instructions/sec: 19.5 inst/sec ████████████░░░░░░░░░░░░░ Total Instructions: 20,760 Session Duration: 1,067 seconds
Null-Byte Elimination: Eliminated: 18,636/20,760 ██████████████████████░░░ 89.77% Strategies Applied: 20,129 Success Rate: 92.57% ███████████████████████░░ 92.57%
Learning Progress: Positive Feedback: 18,636 ███████████████████████░░ 92.57% Negative Feedback: 1,493 █░░░░░░░░░░░░░░░░░░░░░░░░ 07.43% Total Iterations: 40,889 Avg Confidence: 0.0015 ░░░░░░░░░░░░░░░░░░░░░░░░░ 00.15%
[No input content provided to translate.]```
🏆 Top Performing Denullification Strategies:
Strategy Attempts Success% Confidence
-------- -------- -------- ----------
ret_immediate 134 █████████████░░░░░░░░░░░░ 50.00%
MOVZX/MOVSX Null-Byte banishment 162 █████████████░░░░░░░░░░░░ 50.00%
transform_mov_reg_mem_self 774 █████████████░░░░░░░░░░░░ 50.00%
cmp_mem_reg_null 96 ████████████░░░░░░░░░░░░░ 46.88%
cmp_mem_reg 264 ████████████░░░░░░░░░░░░░ 46.97%
lea_disp_null 3900 ███████████░░░░░░░░░░░░░░ 45.38%
transform_add_mem_reg8 2012 ███████████░░░░░░░░░░░░░░ 43.49%
Push Optimized 4214 ███████░░░░░░░░░░░░░░░░░░ 29.31%
ModRM Byte Null Bypass 82 ██████░░░░░░░░░░░░░░░░░░░ 25.61%
conservative_arithmetic 5172 █████░░░░░░░░░░░░░░░░░░░░ 21.37%
arithmetic_addsub_enhanced 1722 ████░░░░░░░░░░░░░░░░░░░░░ 18.12%
PUSH Immediate Null-Byte banishment 3066 ████░░░░░░░░░░░░░░░░░░░░░ 16.54%
SIB Addressing 9560 ████░░░░░░░░░░░░░░░░░░░░░ 16.03%
generic_mem_null_disp_enhanced 22130 ███░░░░░░░░░░░░░░░░░░░░░░ 15.52%
SALC-based Zero Comparison 1654 ███░░░░░░░░░░░░░░░░░░░░░░ 12.88%
Commencez par l'installation des dépendances système requises. Mettez à jour la liste des paquets de votre système et installez Python 3, pip, Git et d'autres outils nécessaires. En fonction de votre distribution Linux, les commandes peuvent varier. Pour les systèmes basés sur Debian/Ubuntu, la commande suivante installera tous les paquets requis :
sudo apt update
sudo apt install python3 python3-pip git curl wget -y
Pour les systèmes basés sur Fedora/RHEL, utilisez ce qui suit :
sudo dnf update
sudo dnf install python3 python3-pip git curl wget -y
Pour Arch Linux, utilisez :
sudo pacman -Syu
sudo pacman -S python python-pip git curl wget
⚡ Processing Efficiency:
Learning Rate: 1.97 feedback/instruction Weight Update Avg: 0.042650 Weight Update Max: 0.100000 Total Weight Updates: 1724.68
Strategy Coverage: Total Strategies: 153+ Strategies Activated: 117 ████████████████████████░ 95.90% Zero-Attempt: 5 █░░░░░░░░░░░░░░░░░░░░░░░░ 04.10%
### COUCHE D'OBFUSCATION
Le mode `--biphasic` ajoute une obfuscation anti-analyse avant le dénullement :
- Aplatissement du flux de contrôle
- Motifs de répartition
- Réaffectation des registres
- Obscurcissement d'état
- Insertion de code mort
- Traînées de NOP
- Substitution d'instructions
- Opérations équivalentes
- Manipulation de la pile d'appels
- Masquage de la résolution d'API
- Encodage de chaînes
- Encodage de constantes
- Anti-débogage
- Techniques de détection de VM
### SÉLECTION DE STRATÉGIE ALIMENTÉE PAR ML
> **Maturité : Beta v2.0** — Entraîné sur des jeux de données d'élimination d'octets nuls. Nécessite un réentraînement pour les cas d'utilisation génériques de mauvais octets.
**Architecture** :
- **Encodage one-hot des instructions** (51 dimensions) remplace les identifiants scalaires d'instructions
- **Fenêtre de contexte** avec tampon glissant de 4 instructions (actuelle + 3 précédentes)
- **Extraction de caractéristiques fixe** avec une disposition stable à 84 dimensions par instruction
- **Registre de stratégies stable** garantissant un mappage de sortie du NN cohérent
- **Rétropropagation complète** à travers toutes les couches (entrée→cachée→sortie)
- **Calcul correct des gradients** pour la perte softmax + cross-entropie
- **Masquage de sortie** filtre les stratégies invalides avant softmax
- **Initialisation He/Xavier** pour une initialisation correcte des poids
- Réseau de neurones feedforward à 3 couches (336→512→200)
- Apprentissage adaptatif à partir des retours succès/échec
- Suit les prédictions, la précision et la confiance
- Retour gracieux à un ordre déterministe
> [!WARNING]
> Le mode ML est expérimental et nécessite une formation/validation supplémentaire avec la nouvelle architecture.
### TRAITEMENT PAR LOTS
- Parcours récursif de répertoires (`-r`)
- Motifs de fichiers personnalisés (`--pattern "*.bin"`)
- Préservation ou aplatissement de la structure
- Modes continuer-sur-erreur ou strict
- Compatible avec toutes les options (biphasic, PIC, `XOR`, etc.)
- **Sortie améliorée** :
- Transformations de taille par fichier avec ratios
- Identification détaillée des mauvais octets en cas d'échec
- Pourcentages de succès/échec dans le résumé
- Liste des fichiers en échec (les 10 premiers affichés en ligne)
- Définition stricte du succès : les fichiers avec des mauvais octets restants sont marqués comme échoués
**EXEMPLE DE SORTIE DU TRAITEMENT PAR LOTS :**```
===== BATCH PROCESSING SUMMARY =====
Total files: 8
Successfully processed: 1 (12.5%)
Failed: 7 (87.5%)
Skipped: 0
Total input size: 650 bytes
Total output size: 764 bytes
Average size ratio: 1.18x
Bad bytes: 5 configured
Configured set: 0x00, 0x09, 0x0a, 0x0d, 0x20
FAILED FILES (7):
- shellcode1.bin
- shellcode2.bin
...
[!TIP] Pour le traitement par lots de grandes collections de shellcode, utilisez
--no-continue-on-errorpour identifier les fichiers problématiques tôt, puis traitez avec succès avec--patternpour exclure les échecs. Le flag--verboseaide à suivre la progression et à identifier quelles stratégies fonctionnent le mieux pour votre corpus de shellcode spécifique. Les fichiers ne sont comptés comme réussis que lorsqu'ils contiennent zéro mauvais octet restant - un succès partiel est considéré comme un échec.
C, bytes Python, chaîne hexadécimaleXOR avec stub de décodage (--xor-encode 0xDEADBEEF)--pic)Lorsque vous utilisez le flag --stats, byvalver fournit des analyses détaillées :
STATISTIQUES D'UTILISATION DES STRATÉGIES :
ANALYSE DE COMPLEXITÉ DES FICHIERS :
RÉSUMÉ DU TRAITEMENT PAR LOTS :
EXEMPLE DE SORTIE :``` ===== BATCH PROCESSING SUMMARY ===== Total files: 162 Successfully processed: 131 (80.9%) Failed: 31 (19.1%) Skipped: 0
Total input size: 35772920 bytes Total output size: 81609 bytes Average size ratio: 0.00x
FAILED FILES (31):
STRATEGY USAGE STATISTICS: ┌─────────────────────────────────────────┬─────────┬─────────┬──────────────┬────────────────┐ │ Strategy Name │ Success │ Failure │ Applications │ Avg Output Size│ ├─────────────────────────────────────────┼─────────┼─────────┼──────────────┼────────────────┤ │ push_immediate_strategy │ 45 │ 3 │ 48 │ 12.34 │ │ mov_reg_mem_self │ 32 │ 1 │ 33 │ 8.21 │ │ ... │ ... │ ... │ ... │ ... │ └─────────────────────────────────────────┴─────────┴─────────┴──────────────┴────────────────┘
FILE COMPLEXITY ANALYSIS: Most Complex Files (by instruction count):
Largest Files (by input size):
Smallest Files (by input size):
Largest Expansion (by size ratio):
### SUITE DE VÉRIFICATION
Outils Python pour la validation :
- `verify_denulled.py` : garantit zéro octet indésirable (prend en charge `--bad-bytes` pour une vérification personnalisée)
- `verify_functionality.py` : vérifie les motifs d'exécution
- `verify_semantic.py` : valide l'équivalence
## ARCHITECTURE
`byvalver` utilise une conception modulaire basée sur le modèle de stratégie :
- Passe 1 : (Optionnel) Obfuscation pour anti-analyse
- Passe 2 : Dénullification pour la suppression des octets nuls
- Couche ML pour l'optimisation des stratégies
- Système par lots pour un traitement évolutif
<div align="center">
<img src="https://assets.kitploit.com/production/public/readmes/9982/8d3a1e20481460fedecaecda6f87bc21355fbbb1f1ef58d7fef4427eda36a381.png" alt="Taxonomie des catégories de stratégies" width="700">
</div>
## EXIGENCES SYSTÈME
- **OS** : Linux (Ubuntu/Debian/Fedora), macOS (avec Homebrew), Windows (via WSL/MSYS2)
- **CPU** : x86/x64 avec instructions modernes
- **RAM** : 1 Go libre
- **Disque** : 50 Mo libre
- **Outils** : compilateur `C`, Make, Git (recommandé)
## DÉPENDANCES
- **Cœur** : GCC/Clang, GNU Make, `Capstone` (v4.0+), `NASM` (v2.13+), xxd
- **Optionnel** : Clang-Format, Cppcheck, Valgrind
- **Entraînement ML** : Bibliothèques mathématiques (incluses)
### COMMANDES D'INSTALLATION
**Ubuntu/Debian:**```bash
sudo apt update
sudo apt install build-essential nasm xxd pkg-config libcapstone-dev clang-format cppcheck valgrind
macOS (Homebrew) — macOS Tahoe 26 (ET PLUS RÉCENT):```bash
brew install capstone nasm pkg-config
brew install vim
### CORRECTIFS DE CONSTRUCTION macOS/Homebrew (CHANGEMENTS DU DÉPÔT)
Des modifications récentes ont été apportées pour améliorer la compatibilité macOS/Homebrew (notamment sur Apple Silicon + le préfixe Homebrew `/opt/homebrew`) :
- Mise à jour du `Makefile` et du `makefile` pour **utiliser `CPPFLAGS` lors de la compilation** et **`LDLIBS` lors de l'édition de liens**, afin que les indicateurs Capstone découverts par `pkg-config` soient respectés.
- Normalisation du chemin d'inclusion de Capstone émis par `pkg-config` de Homebrew, passant de `.../include/capstone` à `.../include` pour que le `#include <capstone/capstone.h>` du projet soit résolu correctement.
Résumé des différences (haut niveau) :
- `$(CC) $(CFLAGS) -c ...` → `$(CC) $(CFLAGS) $(CPPFLAGS) -c ...`
- `$(CC) $(CFLAGS) -o ... $(LDFLAGS)` → `$(CC) $(CFLAGS) $(CPPFLAGS) -o ... $(LDFLAGS) $(LDLIBS)`
- `CAPSTONE_CFLAGS := pkg-config --cflags capstone` → normalized to an include path compatible with `<capstone/capstone.h>`
### DÉPANNAGE (macOS)```bash
# Verify xxd is available (macOS usually ships /usr/bin/xxd)
command -v xxd
# Verify Capstone is discoverable via pkg-config
pkg-config --cflags capstone
pkg-config --libs capstone
# Clean rebuild
make clean
make
Windows (WSL): Identique à Ubuntu/Debian.
Utilisez le Makefile pour les compilations:
make (exécutable optimisé)make debug (symboles, sanitizers)make release (-O3, natif)make static (autonome)make train (bin/train_model)make clean ou make clean-allPersonnalisation:```bash make CC=clang CFLAGS="-O3 -march=native" CPPFLAGS="$(pkg-config --cflags capstone)"
View config: `make info`
## INSTALLATION
Installation globale :```bash
sudo make install
sudo make install-man
Désinstallation:```bash sudo make uninstall
Depuis GitHub :```bash
curl -sSL https://raw.githubusercontent.com/umpolungfish/byvalver/main/install.sh | bash
byvalver [OPTIONS] [output]
- Input/output can be files or directories (auto-batch)
**KEY OPTIONS:**
- `-h, --help`: Aide
- `-v, --version`: Version
- `-V, --verbose`: Verbeux
- `-q, --quiet`: Silencieux
- `--bad-bytes BYTES`: Octets hexadécimaux séparés par des virgules à bannir (par défaut : "00")
- `--profile NAME`: Utiliser un profil d'octets interdits prédéfini (ex. : http-newline, sql-injection)
- `--list-profiles`: Lister tous les profils d'octets interdits disponibles
- `--biphasic`: Obscurcir + denull
- `--pic`: Indépendant de la position
- `--ml`: Sélection de stratégie ML
- `--xor-encode KEY`: `XOR` avec stub
- `--format FORMAT`: raw|c|python|hexstring
- `-r, --recursive`: Traitement par lots récursif
- `--pattern PATTERN`: Glob de fichiers
- `--no-preserve-structure`: Aplatir la sortie
- `--no-continue-on-error`: S'arrêter en cas d'erreur
- `--menu`: Lancer le menu TUI interactif
**EXAMPLES:**```bash
# Default: banish null bytes only (well-tested, recommended)
byvalver shellcode.bin clean.bin
# v3.0 NEW: List available bad-byte profiles
byvalver --list-profiles
# v3.0 NEW: Use predefined profile for HTTP contexts (eliminates 0x00, 0x0A, 0x0D)
byvalver --profile http-newline shellcode.bin clean.bin
# v3.0 NEW: Use profile for SQL injection contexts
byvalver --profile sql-injection shellcode.bin clean.bin
# v3.0 NEW: Use profile for URL-safe shellcode
byvalver --profile url-safe shellcode.bin clean.bin
# v3.0 NEW: Manual bad-byte specification (experimental - not extensively tested)
byvalver --bad-bytes "00,0a,0d" shellcode.bin clean.bin
# Combined with other features
byvalver --profile http-newline --biphasic --ml input.bin output.bin
# Batch processing with profile
byvalver -r --profile http-whitespace --pattern "*.bin" shellcodes/ output/
# Launch interactive TUI mode
byvalver --menu
L'étape d'obfuscation de byvalver (activée via --biphasic) applique des techniques anti-analyse :
MOV Register Exchange : Motifs XCHG/push-popMOV Immediate : Décomposition arithmétiqueArithmetic Substitution : Équivalents complexesMemory Access : Indirection et LEAStack Operations : Gestion manuelle de ESPConditional Jumps : SETcc et mouvementsUnconditional Jumps : Mécanismes indirectsCalls : PUSH + Les priorités favorisent l'anti-analyse (élevée) par rapport aux substitutions simples (faible).
Voir OBFUSCATION_STRATS pour la documentation détaillée des stratégies.
Le passage principal de dénullification utilise plus de 170 stratégies :
MOVNEG, NOT, XOR, Shift, ADD/SUBNEG, XOR, ADD/SUBCALL/JMPTEST préservant les indicateursSIBPUSHCALL/POP, hachage PEB, SALC, arithmétique LEA, shifts, chaînes de pile, etc.LEALes stratégies sont priorisées et sélectionnées via ML ou ordre déterministe
Le registre modulaire permet d'ajouter facilement de nouvelles stratégies pour gérer les motifs de shellcode émergents.
Voir DENULL_STRATS pour la documentation détaillée des stratégies.
Compiler l'entraîneur : make train
Exécuter : ./bin/train_model
./shellcodes/./ml_models/byvalver_ml_model.binModèle chargé automatiquement à l'exécution avec résolution de chemin.
./bin/byvalver --ml shellcodes/linux_x86/execve.bin output.bin
./bin/byvalver --ml test.bin output.bin 2>&1 | grep "ML Registry"
./bin/byvalver --ml --batch shellcodes/linux_x86/*.bin output/
cat ml_metrics.log
**RECOMMANDATION :** Le mode ML nécessite un réentraînement avec des ensembles de données de bad-byte diversifiés avant l'utilisation en production. Actuellement optimisé uniquement pour le bannissement des null-byte.
## MÉNAGERIE D'AGENTS
`byvalver` est livré avec un **pipeline d'agents alimenté par l'IA** (`agents/`) qui peut découvrir de manière autonome les lacunes dans le registre de stratégies, proposer une nouvelle technique d'élimination des bad-byte, générer une implémentation C complète et l'intégrer dans le projet — le tout en une seule commande.
Le pipeline est construit sur le framework d'agents multi-fournisseurs [AjintK](https://github.com/umpolungfish/byvalver/blob/HEAD/AjintK/) et prend en charge **Anthropic**, **DeepSeek**, **Qwen**, **Mistral** et **Google** comme backends LLM.
### DÉMARRAGE RAPIDE```bash
# Requires API key for your chosen provider
export ANTHROPIC_API_KEY="..." # or DEEPSEEK_API_KEY, QWEN_API_KEY, etc.
# --- Specialized Generators ---
# 1. General Technique Generator (discover → propose → generate → implement)
python3 run_technique_generator.py
# 2. Obfuscation Technique Generator (specifically for anti-analysis/evasion)
python3 run_obfuscation_generator.py
# 3. Bad-Byte Removal Generator (targeting restricted byte elimination)
python3 run_badbyte_generator.py
# 4. Profile-Specific Strategy Generator (targeting a specific bad-byte profile)
python3 run_profile_generator.py --profile alphanumeric-only
# --- Common Options ---
# Dry-run: discover and propose only, no files written
python3 run_technique_generator.py --dry-run
# Target a specific architecture
python3 run_technique_generator.py --arch x64
# Use a different provider / model
python3 run_technique_generator.py --provider deepseek --model deepseek-chat
--dry-run Stop after Stage 2 — print proposal, write nothing --arch x86 | x64 | both (default: both) --provider anthropic | deepseek | qwen | mistral | google (default: anthropic) --model Model ID (provider-specific default applied if omitted) --verbose Print full LLM responses at each stage
### PRÉREQUIS```bash
# Install Python dependencies (uses AjintK framework)
pip install anthropic tenacity httpx pyyaml
# Or with uv (faster)
uv pip install -r AjintK/requirements.txt
Le pipeline a été validé avec DeepSeek (deepseek-chat) et Anthropic (claude-sonnet-4-6).
Lors d'une exécution typique, il découvre plus de 340 stratégies, propose une technique (par exemple le ré-encodage de préfixe VEX pour les instructions SSE/AVX), génère environ 200 lignes de C et produit une construction propre — entièrement sans surveillance.
Voir docs/AGENT_MENAGERIE.md pour les détails d'architecture et l'extension du pipeline avec de nouveaux agents.
C moderne avec modularitébash tests/run_tests.sh (voir tests/README.md)make formatdocker build -t byvalver . (voir Dockerfile)La documentation complète est disponible dans le répertoire docs/ :
Capstone/NASM/xxdPour les problèmes persistants, utilisez le mode verbeux et vérifiez les journaux
Si le bannissement des mauvais octets échoue sur un shellcode spécifique, envisagez d'ajouter des stratégies ciblées au registre.
byvalver est déchaîné librement sur la Terre sous la UNLICENSE.
| Architecture | Maturité | Stratégies | Notes |
|---|
| x86 (Intel/AMD 32 bits) | Stable v4.2 | 150+ | Testé en production, couverture complète |
| x64 (Intel/AMD 64 bits) | Stable v4.2 | 150+ | Architecture par défaut, testé en production |
| ARM (32 bits) | Expérimental v0.1 | 7 de base | Tests limités, instructions de base uniquement |
| ARM64 (AArch64) | Expérimental v0.1 | Basique | Framework prêt, stratégies minimales |
JMPControl Flow Flattening : États du dispatcherInstruction Substitution : Opérations équivalentesDead Code : Insertions inoffensivesRegister Reassignment : Masquage du flux de donnéesMultiplication by One : Motifs IMULNOP Sleds : Remplissage variablePolymorphic NOP Insertion : Équivalents multiples de NOP (XCHG EAX,EAX, LEA, MOV)Constant Unfolding : Décomposition des immédiats en opérations arithmétiquesRegister Renaming : Substitution de registres basée sur XCHGStack Spill Obfuscation : Opérations arithmétiques basées sur la pileInstruction Reordering : Réorganisation d'instructions avec insertion de NOPRuntime Self-Modification : Génération de code auto-modifiantOverlapping Instructions : Séquences d'octets à interprétations multiplesJump Decoys : Cibles facticesRelative Offsets : Sauts calculésSwitch-Based : Flux calculéBoolean Expressions : Équivalents de De MorganVariable Encoding : Transformations réversiblesTiming Variations : DélaisRegister State : Manipulations complexesStack Frames : Gestion personnaliséeAPI Resolution : Hachage complexeString Encoding : Décodage à l'exécutionConstants : Génération d'expressionsDebugger Detection : Vérifications obfusquéesVM Detection : Méthodes dissimulées| Étape | Agent | Ce qu'il fait |
|---|
| 1 | StrategyDiscoveryAgent | Analyse le répertoire src/, extrait les noms et catégories des 340+ stratégies, demande au LLM de résumer les lacunes de couverture |
| 2 | TechniqueProposalAgent | À partir du catalogue, propose une technique véritablement nouvelle avec justification, instruction cible et approche |
| 3 | CodeGenerationAgent | Génère une implémentation complète .h + .c conforme à strategy_t en utilisant strategy.h/utils.h/mov_strategies.c comme référence |
| 4 | ImplementationAgent | Écrit les fichiers dans src/, patche strategy_registry.c (include → déclaration anticipée → appel d'enregistrement), exécute make |
| Document | Description |
|---|
| docs/USAGE.md | Guide d'utilisation complet avec exemples |
| docs/BUILD.md | Instructions de construction et notes spécifiques à la plateforme |
| docs/TUI_README.md | Documentation interactive de l'interface TUI |
| docs/DENULL_STRATS.md | Catalogue de stratégies de dénullification |
| docs/OBFUSCATION_STRATS.md | Documentation des techniques d'obfuscation |
| docs/BAD_BYTE_PROFILES.md | Référence des profils de mauvais octets |
| docs/BADBYTEELIM_STRATS.md | Stratégies d'élimination étendues |
| docs/STRATEGY_HIERARCHY.md | Organisation et priorité des stratégies |
| docs/ADVANCED_STRATEGIES.md | Techniques de transformation avancées |
| docs/WHITEPAPER.md | Livre blanc technique |
| docs/AGENT_MENAGERIE.md | Pipeline d'agents : génération automatique de techniques |