
Eine stealthy, vollständig syscall-basierte C/C++-Userland-Anti-Debugging-Bibliothek für Windows, die Software vor Reverse Engineering schützen soll
antidbg ist eine x64-Benutzermodus-Anti-Debugging-Bibliothek für Windows, die dazu entwickelt wurde, Software vor Debugging zu schützen.
Betrachten Sie die Bibliothek als Grundlage für Ihren Anti-Debugging-Schutz, nicht als Ihre einzige Verteidigung.
Die Bibliothek ist:
Das Bedrohungsmodell geht davon aus, dass ein Debugger Software, die durch dieses Schutzsystem abgesichert ist, von jeder Art von Privilegienstufe aus abfangen kann, wobei die Erkennungen umso weniger wirksam sind, je höher die Privilegienstufe ist.
Diese Software ist gehärtet, um triviale CPL > 0-Abfangen zu umgehen, indem sie:
RAX verhindert, indem nicht-legitime Instrumentierungs-Callbacks erkannt und/oder überschrieben werden..text-Abschnitten erkennt, indem ein On-Disk-vs-In-Memory-Vergleich durchgeführt wird.VEH, SEH, LPTOP_LEVEL_EXCEPTION_FILTER) und Software-Breakpoints analysiert.PAGE_GUARD-Umleitungsverhalten testet.TLS callbacks vor Debugger-Anhängen schützt und eine Inspektion der Thread-Startadresse durchführt.DbgBreakPoint und DbgUiRemoteBreakin erstellt, um den Prozess zum Absturz zu bringen oder zurückzukehren.Wenn die einzige Möglichkeit, eine Prüfung durchzuführen, darin besteht, eine nicht syscall-fähige exportierte Funktion zu verwenden, wird die betreffende Funktion manuell reverse-engineered und rekonstruiert, um im Modul-Adressraum des Schutz-Threads zu laufen. Alle Benutzermodus-Speicherstrukturen werden mit direkter Speicherintrospektion statt mit APIs durchlaufen.
Die Schutzroutinen lassen explizit einige Ausführungspfade ohne Schutz gegen Benutzermodus-Hooks, die als Speicher-Honeypots fungieren. Sie werden für Zustandsvergleiche und zur Verwirrung von Angreifern verwendet.
Schutzroutinen laufen pseudo-zufällig. Die Entropie wird durch reines hardwarebasiertes ASLR, Stack-Verhalten und ein wenig Mathematik bestimmt; ohne den Kernel aufzurufen, Benutzermodus-APIs zu verwenden oder bedingt oder unbedingt beendende Anweisungen durch Hypervisoren auszugeben.
Wenn eine Sicherheitsverletzung erkannt wird, bringt das Schutzsystem den aktuellen Prozess zum Absturz, indem es INT 29h mit STATUS_SXS_EARLY_DEACTIVATION aufruft und dabei alle Ausnahmehandler umgeht. In einigen Fällen stellt es auch einen APC an den Kernel in die Warteschlange, um den aktuellen Prozess zu beenden.
Zu finden im Haupteinstiegspunkt (abdg.c) dieser Bibliothek, in der Reihenfolge erklärt.
Zusammengefasste Erklärungen; eine bestimmte Erkennung kann mehr zusätzliche/Unterprüfungen durchführen als hier erklärt.
Weiteren Quellcode anderer Erkennungskonzepte finden Sie im Ordner antidebug\archived.