Le marché des solutions de protection logicielle bin2bin est dominé depuis des années par des outils tels que Themida et VMProtect, reconnus pour leur capacité à sécuriser les applications contre l’ingénierie inverse, la falsification et les attaques. Cependant, un nouvel acteur, CodeDefender, fait son entrée en promettant des innovations technologiques qui pourraient redéfinir les standards de l’industrie. Avec une approche novatrice basée sur une obfuscation avancée, une stabilité accrue et une compatibilité avec les dernières technologies de sécurité, CodeDefender ambitionne de dépasser les limites des solutions existantes. Mais cette solution est-elle réellement à la hauteur de ses promesses ? Et surtout, peut-elle rivaliser avec des géants comme Themida et VMProtect ?
Dans cet article, nous analysons les caractéristiques uniques de CodeDefender, ses avantages compétitifs, et explorons si cet outil pourrait devenir le nouveau standard en matière de protection logicielle.
CodeDefender propose une gamme complète de fonctionnalités pour protéger vos applications contre l’analyse et la manipulation non autorisées. Voici un aperçu détaillé de ces fonctionnalités :
Obfuscation des Fonctions
Mutation Engine
Cette technologie propriétaire transforme des séquences d’instructions simples en expressions complexes en utilisant une variété d’instructions x86-64. Le code résultant est si étroitement intégré que la suppression d’une seule instruction peut le rendre non fonctionnel.
Le code original
Exemple de mutation
Mixed Boolean Arithmetic (MBA)
Cette technique combine des opérations booléennes et arithmétiques pour obscurcir la logique du code, rendant l’analyse plus complexe pour les attaquants.
Loop Encode Semantics
Cette fonctionnalité encode des opérations simples telles que l’addition, la soustraction, le ET logique et le OU exclusif en boucles complexes, rendant difficile leur analyse par des moteurs d’exécution symbolique.
Opaque Block Duplication Pass
Cette technique duplique des blocs de code et crée des conditions prédéfinies pour déterminer le chemin d’exécution, augmentant ainsi la complexité du code.
Dematerialize Constants
Cette fonctionnalité obscurcit les constantes du code, les rendant peu susceptibles de réapparaître dans un registre ou un emplacement mémoire, ce qui est idéal pour les fonctions manipulant des valeurs sensibles.
Loop-Based Constant Encoding
Pour renforcer la sécurité contre l’exécution symbolique, les constantes sont encodées en utilisant des structures de boucles dont les limites sont intentionnellement obscurcies, rendant l’analyse plus difficile.
Simple Constant Obfuscation
Conçue pour éviter la détection par des méthodes de signature statique, cette technique obscurcit les valeurs constantes pour empêcher leur identification lors de scans de signatures.
IDA Decompiler Crasher
Cette option perturbe le décompilateur d’IDA Pro, empêchant toute analyse ultérieure du fichier en cours. Elle est appliquée directement à la fonction que vous souhaitez protéger de la décompilation.
Obfuscation du Module
Import Obfuscation
Chaque PE a une IAT (Import Address Table), cette table contient toutes les fonctions exportées de librairies comme kernel32.dll etc. Cette technique supprime toutes les importations du fichier binaire et les résout lors de l’exécution.
Anti-Debug (Windows 10)
Empêche les débogueurs de s’attacher à votre programme, neutralisant la plupart des débogueurs modernes. Cette fonctionnalité nécessite que le programme s’exécute sur Windows 10 ou une version supérieure.
Fake Entry Point
Chaque PE commence à un endroit appelé OEP (Original Entry Point). CodeDefender obscurcit le point d’entrée en utilisant une obfuscation du flux de contrôle basée sur des exceptions, perturbant les émulateurs PE basés sur unicorn-engine qui ne supportent pas correctement la gestion structurée des exceptions.
Fonctionnalités de Personnalisation
Fake PDB String
Remplace la chaîne PDB existante par une chaîne personnalisée, pouvant afficher des motifs ASCII dans certains outils d’analyse comme IDA Pro.
Custom Section Names
Permet de personnaliser le nom des sections créées par le framework, y compris la possibilité d’avoir un nom de section vide.
Conclusion
Ces fonctionnalités offrent une protection robuste et personnalisable pour vos applications, rendant l’analyse et la manipulation non autorisées beaucoup plus difficiles pour les attaquants potentiels. CodeDefender se positionne comme une alternative sérieuse aux solutions établies, avec des innovations qui pourraient redéfinir les standards de la protection logicielle bin2bin.