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;
}
Я нашел этот трюк в следующей статье:как этот код работает для обнаружения ОС XP?
http://spareclockcycles.org/2012/02/14/stack-necromancy-defeating-debuggers-by-raising-the-dead/
Но я не могу понять, какие общие знания и конвенцию за трюком. Спасибо за любые комментарии.
Это официально неопределенное поведение, поэтому даже когда оно действительно работает, на самом деле этого не происходит. Если версия ОС - это то, что вам нужно, есть более безопасные и менее запутанные способы, но это, вероятно, не относится к делу. – chris
Статья, которую вы связали, объясняет это очень подробно. Вы читали? –
@DavidHeffernan, вы правы, спасибо. –