
Sammlung undokumentierter Anti-Debug-Tricks zur Erkennung von Debuggern wie x64dbg, mit C++-Codebeispielen und Reversing-Notizen für die Evasion-Forschung.
nur eine Sammlung einiger undokumentierter Anti-Debug-Tricks, die ich beim Reversen und Herumspielen mit Debuggern gefunden habe.
ich werde hier mehr Zeug hinzufügen, wann immer ich etwas Interessantes finde.
das hier habe ich bei einer TTD-Analyse gefunden. es ist keine echte Anti-Debug-Funktion oder so, nur ein seltsames Dateifreigabeverhalten, das zur Erkennung von x64dbg genutzt werden kann.
soweit ich gesehen habe, existiert das seit etwa 10 Jahren und wurde in x64dbg immer noch nicht behoben.
ich habe das in einigen meiner Anticheats verwendet und nie wirklich gesehen, dass jemand darüber spricht. es ist allerdings nichts Verrücktes, ziemlich einfach zu patchen, sobald man weiß, was vor sich geht.
im Grunde versucht es, seine eigene Executable mit exklusivem Zugriff zu öffnen. wenn etwas anderes ein konfliktäres Handle auf die Datei hält, schlägt CreateFileA mit ERROR_SHARING_VIOLATION fehl.
das bedeutet nicht unbedingt, dass ein Debugger angehängt ist, aber es kann in bestimmten Fällen als Erkennungstrick funktionieren.

// made by metixw ( @metixw )
#include <windows.h>
#include <iostream>
bool walahi()
{
char path[MAX_PATH];
GetModuleFileNameA(NULL, path, MAX_PATH);
HANDLE h = CreateFileA(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (h == INVALID_HANDLE_VALUE) return GetLastError() == ERROR_SHARING_VIOLATION;
CloseHandle(h);
return false;
}
// just an example but if u wanna use it as an anti-debug trick put it in a thread
int main()
{
while (true)
{
if ( walahi() )
{
std::cout << "detected walahi" << std::endl;
system( "pause" );
Sleep(1000);
exit(0);
}
Sleep( 500 );
}
return 0;
}
mehr Tricks bald.