
Coleção de truques anti-debug não documentados para detectar depuradores como o x64dbg, com exemplos de código C++ e notas de engenharia reversa para pesquisa de evasão.
apenas uma coleção de alguns truques anti-debug não documentados que encontrei enquanto fazia engenharia reversa e mexia com depuradores.
vou adicionar mais coisas aqui sempre que encontrar algo interessante.
encontrei este enquanto fazia uma análise com ttd. não é um recurso anti-debug de verdade nem nada, apenas um comportamento estranho de compartilhamento de arquivos que pode ser usado para detectar o x64dbg.
pelo que vi, isso existe há uns 10 anos e ainda não foi corrigido no x64dbg.
usei isso em alguns dos meus anticheats antes e nunca vi ninguém falando sobre isso. não é nada demais, porém, é bem fácil de corrigir uma vez que você entende o que está acontecendo.
basicamente, ele tenta abrir seu próprio executável com acesso exclusivo. se algo mais estiver segurando um handle conflitante para o arquivo, CreateFileA falha com ERROR_SHARING_VIOLATION.
isso não significa necessariamente que um depurador está anexado, mas pode funcionar como um truque de detecção em certos 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;
}
mais truques em breve.