Сегодня я расскажу о довольно простом и довольно понятном антиотладочном приёме. Суть его крутится около OpenProcess. А точнее вокруг дескриптора, который возвращает эта функция. Дело в том, что при нормальном запуске программы, она возвращает что-то типа
000007D4. А при отладке, это значение может варироваться. Это вызвано, если этой функции передать значение PROCESS_QUERY_INFORMATION, то есть получить информацию о процессе. Именно из-за этого, дескриптор и ответственен за нужный нам возврат функции.
Но говорить больше не будем, а будем делать. Этот код будет героем дня сегодня
Листинг 1.1
#include "stdafx.h"
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE han;
han = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());
if (han == (HANDLE)2004) {
MessageBox(NULL, L"OK,OK, you win", L"Good", MB_OK);
} else {
MessageBox(NULL, L"Ha-ha, i know, you useing debugger", L"Debugger Detected", MB_OK);
}
return 0;
}
В принципе, всё было описано выше, код предельно прост и понятен. Кто не знает как выглядит скелет функции OpenProcess, то в MSDN. Остальным, удачи и терпения!
Ивницкий Валерий Альбертович…
Ивницкий Валерий Альбертович …
http://rel» rel=»nofollow»>Хм…..…
Ссылки как то непонятно отображаются…