как этот код работает для обнаружения ОС XP?

int _tmain(int argc, _TCHAR* argv[])
{
UINT *ptr = (UINT*) ((((UINT)&ptr) & 0x00FF0000) | 0xfe0c);
if (*ptr) printf("higher than XP\n"); // It's really amazing!!!!
else printf("XP\n");
return 0;
}

Я нашел этот трюк в следующей статье:

http://spareclockcycles.org/2012/02/14/stack-necromancy-defeating-debuggers-by-raising-the-dead/

Но я не могу понять, какие общие знания и соглашения стоят за уловкой.
Спасибо за любой комментарий.

-1

Решение

Я не понимаю фон, но он устанавливает указатель на адрес, вычисленный из стека указателя (в 0xFE0C). Затем считывает значение по этому адресу, и оно либо ноль (XP), либо ненулевое (не XP).

Я очень сомневаюсь, что это НАДЕЖНЫЙ способ определить это. Правильный способ определения версии Windows — использовать [GetVersion][1]

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector