L’obfuscation contournée (Partie 2)
Dans l’article précédent [1], nous avons vu, d’un point de vue théorique, qu’il était possible de retrouver le code d’origine d’un programme simple protégé par un système d’obfuscation sans jamais analyser ce dernier.En effet, à l’aide d’un émulateur qui nous permet une approche dynamique, nous avions porté une attaque en deux temps :Tout d’abord, nous avions réalisé une analyse différentielle statistique élémentaire sur l’ensemble de la trajectoire [L1] pour dégager des instructions « intéressantes » appelées « program points » [L4].Ensuite, à partir de ces program points obtenus, nous avions réalisé une analyse locale en générant des slices [L5] par backward slicing. En supprimant les instructions de transfert, nous avions obtenu sur le binaire proposé par Craig Smith au recon2008 l’algorithme de vérification du « Serial » en quelques minutes.Dans cet article, nous allons prolonger une partie de ce travail en regardant ce qui se passe sur des protections plus robustes.