Certains programmes sont très pudiques. Ils n'aiment pas trop qu'on s'intéresse à leurs parties intimes, et ils le font savoir. Packers, anti-debug, anti-tampering et autres anti-vm sont autant de ceintures de chasteté modernes pour nos binaires.
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...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première