Dead code inclusion
- Implémentation : inclusion de code jamais exécuté.
- Difficulté d’analyse : le code mort détourne l’attention de l’analyse.
Overlapping d’instruction
Tirer parti du fait qu’un même flux d’octets se désassemble différemment selon le point d’entrée, de sorte qu’une seule séquence porte deux lectures.
ABI violations
- Implémentation : ne pas suivre les conventions d’appel standard.
- Difficulté d’analyse : provoque des erreurs dans les outils d’analyse qui s’attendent à des conventions standard.
- Exemple : modifier le registre de la pile manuellement en assembleur.
Code chaining ou jumbling
- Implémentation : réorganiser le code de manière non linéaire.
- Difficulté d’analyse : rend difficile de suivre le flot de contrôle.
- Exemple : utiliser des sauts indirects, trampolines et pointeurs de fonction en C.
Prédicats opaques
- Implémentation : utiliser des conditions dont le résultat est connu, mais pas évident pour l’analyseur ; ou-bien calculer des adresses au runtime.
- Difficulté d’analyse : induit en erreur les outils d’analyse sur le flot possible du programme.
- Exemple : des conditions en assembleur qui sont toujours vraies/fausses mais complexes à évaluer.