AntidBG est une collection de techniques de débogage de Windows. Les techniques sont classées par les méthodes qu'ils utilisent pour trouver un débogueur.
Vous voulez voir ce truc en action? Consultez la playlist sur YouTube.
Antidbg est écrit en C et ne nécessite qu'un seul fichier source et un en-tête. Presque toutes ces méthodes sont conçues pour ne prendre aucune entrée et ne produire aucune sortie. Ils visent à être des chèques de débogueur autonomes qui détachent automatiquement les débuggeurs.
AntidBG est conçu pour être lisible afin que l'utilisateur puisse en apprendre davantage sur les techniques. Si vous choisissez d'utiliser ces méthodes dans votre propre projet, vous bénéficierez grandement en ajoutant une obscurcissement en plus de ces méthodes. L'obscurcissement n'est pas l'objectif de ce projet.
Le Gauntlet est une application simple qui exécute chaque vérification AntidBG l'une après l'autre. Son but est de tester votre capacité à contourner les méthodes anti-débugage et à arriver à la fin du gant tout en fonctionnant sous un débogueur.
Vous voulez rendre le gant plus difficile ? Undefine show_debug_messages (défini par défaut dans antidbg.cpp). Cette option produit une boîte de messages lorsque vous êtes pris avec des informations sur la chèque qui vous ont obtenu.
Aide! La méthode x ne semble pas fonctionner.
De nombreux contrôles anti-débugage se concentrent sur les cas de bord étrange. Certains vous obligent à passer un seul pas, certains nécessitent un débogueur spécifique pour être utilisé, certains vous obligent à transmettre l'exception au débogueur, etc.
Toutes les méthodes d'antidBG ont été testées dans les conditions qu'ils sont conçues, travaillent sur Windows 10 64 bits. La plupart (sinon la totalité) devraient également fonctionner sur toutes les autres versions de Windows.
Aide! Cette chose ne compilera pas!
AntidBG a été développé et testé à l'aide de Microsoft Visual Studio 2019. Tant que vous utilisez 2019, veuillez soumettre un problème avec les détails et je serais heureux de vous aider.
Pourquoi l'assemblage x86 est-il en ligne tandis que les variantes x64 sont dans un fichier .asm?
Microsoft a pensé que ce serait une excellente idée de cesser de permettre aux développeurs d'écrire un assemblage en ligne pour x64. Je ne sais pas pourquoi, mais la raison courante que je vois citée sur Internet est que les développeurs sont nuls à l'écriture de l'assemblage et que les compilateurs sont bien meilleurs. Bien que je ne sois pas en désaccord avec cela, je doute que ce soit la vraie raison. Quelle que soit la raison, nous devons maintenant sauter à travers des cerceaux pour faire quelque chose de même à distance. Un grand merci à LallousLab et Onipot pour m'avoir guidé à travers ce champ de mines.
J'ai plus de questions.
Je serais heureux d'y répondre! Veuillez soumettre un problème GitHub avec vos questions et je ferai de mon mieux pour vous aider dès que possible.
Merci aux contributeurs et à tous ceux qui ont fourni des commentaires dans le passé sur ce projet.