
Colección de trucos anti-depuración no documentados para detectar depuradores como x64dbg, con ejemplos de código en C++ y notas de ingeniería inversa para investigación de evasión.
solo una colección de algunos trucos anti debug no documentados que he encontrado mientras hacía reversing y trasteaba con debuggers.
iré añadiendo más cosas aquí siempre que encuentre algo interesante.
encontré este mientras hacía algo de análisis con ttd. no es una característica anti debug real ni nada por el estilo, solo un comportamiento extraño de compartición de archivos que se puede usar para detectar x64dbg.
por lo que he visto, esto lleva existiendo unos 10 años y todavía no se ha corregido en x64dbg.
he usado esto en algunos de mis anticheats antes y nunca vi realmente a nadie hablando de ello. tampoco es nada del otro mundo, es bastante fácil de parchear una vez que sabes qué está pasando.
básicamente, intenta abrir su propio ejecutable con acceso exclusivo. si algo más está manteniendo un handle conflictivo sobre el archivo, CreateFileA falla con ERROR_SHARING_VIOLATION.
esto no significa necesariamente que haya un debugger adjunto, pero puede funcionar como truco de detección en ciertos casos.

// 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;
}
más trucos pronto.