Mais contre quoi veut-on se protéger ? Les craintes sont multiples, et dépendent fortement de la nature du binaire. Quand on est un malware, on va essayer d'être le plus furtif possible, se protéger contre le désassemblage, adapter son comportement suivant l'environnement d'exécution (anti-vm). Quand on est un système de licence, on va potentiellement chercher à détecter toute modification du code (anti-tampering). Un programme industriel reposant sur une technologie confidentielle va, lui, certainement appliquer un obfuscateur de code et chercher à empêcher l'utilisation d'un débogueur (anti-debug), etc.
Une propriété largement partagée par ces anti- est leur proportion à être très ciblés contre un outil, et à devenir obsolètes dès que l’astuce est connue. Dans la suite, on listera plusieurs techniques, généralement assez connues, chacune étant adaptée à une famille d'outils. Et pour illustrer le problème de ces techniques, on montrera comment les...
