究竟/警卫旗是做什么的? (控制流量保护)

时间:2017-05-18 11:43:10

标签: windows visual-c++

使用Visual C ++ 2015及更高版本中的选项/guard,我们可以为我们的程序启用 Control Flow Guard (与/ZI/clr不兼容,但没关系。)

CFG究竟是什么?文章还谈到了 CFG感知操作系统 - 什么是CFG感知操作系统?有this article,但我无法理解。

显示启用CFG的程序的影响/效果的任何代码示例(除了下面粘贴的简单代码)?

含糊地说,我注意到如果通过(函数)指针调用某个函数,并且地址无效,它将终止应用程序?是吗?内核干预怎么样,mentioned here

示例代码,我用过:

void Crash()
{
    void *pff = new int;

    __try
    {   
        ((void(*)())pff)();
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {
        std::cout << "Crash";
    }
}

如果未启用/ guard,则会显示“Crash”,否则会导致程序崩溃。 那是吗? - 或其他任何东西(因为内核扮演重要角色,程序头将启用CFG,我认为还必须有其他东西)。

0 个答案:

没有答案