
Raccolta di trucchi anti-debug non documentati per rilevare debugger come x64dbg, con esempi di codice C++ e note di reversing per la ricerca sull'evasione.
solo una raccolta di alcuni trucchi anti debug non documentati che ho trovato mentre facevo reverse engineering e smanettavo con i debugger.
aggiungerò altra roba qui ogni volta che trovo qualcosa di interessante.
l'ho trovato mentre facevo un po' di analisi con ttd. non è una vera funzionalità anti debug o roba del genere, solo uno strano comportamento di condivisione file che può essere usato per rilevare x64dbg.
da quello che ho visto, esiste da tipo 10 anni e non è ancora stato risolto in x64dbg.
l'ho usato in alcuni dei miei anticheat prima e non ho mai davvero visto nessuno parlarne. non è niente di eccezionale comunque, abbastanza facile da patchare una volta che sai cosa sta succedendo.
in pratica, prova ad aprire il proprio eseguibile con accesso esclusivo. se qualcos'altro sta tenendo un handle in conflitto sul file, CreateFileA fallisce con ERROR_SHARING_VIOLATION.
questo non significa necessariamente che un debugger sia agganciato, ma può funzionare come trucco di rilevamento in certi casi.

// 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;
}
altri trucchi presto.