
Collection d'astuces anti-débogage non documentées pour détecter les débogueurs comme x64dbg, avec des exemples de code C++ et des notes de reversing pour la recherche en évasion.
juste une collection de quelques astuces anti-débogage non documentées que j'ai trouvées en faisant du reverse engineering et en m'amusant avec des débogueurs.
j'ajouterai d'autres trucs ici dès que je trouve quelque chose d'intéressant.
j'ai trouvé celle-ci en faisant une analyse ttd. ce n'est pas une véritable fonctionnalité anti-débogage ni quoi que ce soit, juste un comportement étrange de partage de fichiers qui peut être utilisé pour détecter x64dbg.
d'après ce que j'ai vu, ça existe depuis environ 10 ans et ce n'est toujours pas corrigé dans x64dbg.
je l'ai utilisée dans certains de mes anticheats auparavant et je n'ai jamais vraiment vu quelqu'un en parler. ce n'est rien de fou cela dit, assez facile à patcher une fois qu'on sait ce qui se passe.
en gros, il essaie d'ouvrir son propre exécutable avec un accès exclusif. si quelque chose d'autre détient un handle conflictuel sur le fichier, CreateFileA échoue avec ERROR_SHARING_VIOLATION.
cela ne signifie pas nécessairement qu'un débogueur est attaché, mais ça peut fonctionner comme astuce de détection dans certains cas.

// 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;
}
d'autres astuces bientôt.