此代码如何用于检测 XP 操作系统

how does this code work for detecting XP OS?

本文关键字:检测 XP 操作系统 用于 代码 何用于      更新时间:2023-10-16
int _tmain(int argc, _TCHAR* argv[])
{
    UINT *ptr = (UINT*) ((((UINT)&ptr) & 0x00FF0000) | 0xfe0c);
    if (*ptr) printf("higher than XPn"); // It's really amazing!!!!
    else printf("XPn");
    return 0;
}

我在下面的文章中发现了这个技巧:

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

但是我不知道这个把戏背后的常识和惯例是什么。感谢您的任何评论。

我不

明白背景,但它设置了一个指向从堆栈指针计算的地址的指针(在0xFE0C处(。然后读取此地址处的值,该值为零 (XP( 或非零 (不是 XP(。

我非常怀疑这是确定这一点的可靠方法。确定 Windows 版本的正确方法是使用[GetVersion][1]