
Коллекция недокументированных антиотладочных приёмов для обнаружения отладчиков вроде x64dbg, с примерами кода на C++ и заметками по реверс-инжинирингу для исследований обхода защиты.
просто коллекция некоторых недокументированных анти-отладочных трюков, которые я нашёл во время реверса и возни с отладчиками.
буду добавлять сюда ещё материал, когда найду что-то интересное.
нашёл этот трюк во время анализа с помощью ttd. это не какая-то настоящая анти-отладочная фича или что-то такое, просто странное поведение при совместном использовании файлов, которое можно использовать для обнаружения x64dbg.
судя по тому, что я видел, это существует уже лет 10 и до сих пор не исправлено в x64dbg.
я использовал это в некоторых своих античитах раньше и никогда особо не видел, чтобы кто-то об этом говорил. впрочем, ничего безумного, довольно легко запатчить, когда понимаешь, что происходит.
по сути, он пытается открыть свой собственный исполняемый файл с эксклюзивным доступом. если что-то другое держит конфликтующий хэндл на файл, CreateFileA завершается с ошибкой ERROR_SHARING_VIOLATION.
это не обязательно означает, что отладчик присоединён, но в определённых случаях может сработать как трюк для обнаружения.

// 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;
}
больше трюков скоро.