
Une bibliothèque anti-débogage en espace utilisateur C/C++ furtive et entièrement basée sur des appels système pour Windows, conçue pour protéger les logiciels contre l'ingénierie inverse
antidbg est une bibliothèque anti-débogage en mode utilisateur x64 pour Windows, conçue pour protéger les logiciels contre le débogage.
Considérez cette bibliothèque comme une base pour votre protection anti-débogage, et non comme votre seule défense.
La bibliothèque est :
Le modèle de menace suppose qu'un débogueur peut intercepter un logiciel protégé par ce système de protection depuis n'importe quel niveau de privilège, les détections étant moins efficaces à mesure que le niveau de privilège augmente.
Ce logiciel est renforcé pour contourner l'interception triviale avec CPL > 0, en :
RAX en détectant et/ou en écrasant les callbacks d'instrumentation non légitimes..text surveillées en effectuant une comparaison sur disque vs en mémoire.VEH, SEH, LPTOP_LEVEL_EXCEPTION_FILTER) et les points d'arrêt logiciels.PAGE_GUARD.TLS callbacks contre l'attachement d'un débogueur, en effectuant une inspection de l'adresse de démarrage des threads.DbgBreakPoint et DbgUiRemoteBreakin, pour faire planter le processus ou retourner.Si le seul moyen d'effectuer une vérification est d'utiliser une fonction exportée non appelable par syscall, la fonction en question est manuellement rétro-ingénierée et reconstruite pour s'exécuter dans l'espace d'adressage du module du thread de protection. Toutes les structures mémoire en mode utilisateur sont parcourues par introspection directe de la mémoire au lieu d'utiliser des API.
Les routines de protection laissent explicitement certains chemins d'exécution sans protection contre les hooks en mode utilisateur, agissant comme des pots de miel mémoire. Ils sont utilisés pour la comparaison d'état et pour confondre les attaquants.
Les routines de protection s'exécutent de manière pseudo-aléatoire. L'entropie est décidée avec un pur ASLR basé sur le matériel, le comportement de la pile et un peu de mathématiques ; sans appeler le noyau, sans utiliser d'API en mode utilisateur, ni émettre d'instructions de sortie conditionnelles ou inconditionnelles par des hyperviseurs.
Lorsqu'une violation de sécurité est détectée, le système de protection fait planter le processus courant en invoquant INT 29h avec STATUS_SXS_EARLY_DEACTIVATION, contournant tous les gestionnaires d'exceptions. Dans certains cas, il met également en file d'attente un APC vers le noyau afin de terminer le processus courant.
Se trouvent dans le point d'entrée principal (abdg.c) de cette bibliothèque, expliquées dans l'ordre.
Explications résumées ; une détection spécifique peut effectuer plus de vérifications supplémentaires/sous-vérifications que ce qui est expliqué ici.
Vous pouvez trouver plus de code source d'autres concepts de détection dans le dossier antidebug\archived.