Антиотладочные приёмы. Часть 4. Взгляд на процесс.

Сегодня я расскажу о довольно простом и довольно понятном антиотладочном приёме. Суть его крутится около 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. Остальным, удачи и терпения!

Добавить комментарий