背景信息
因此,在 Windows 7 及更高版本中,登录后按下 control + alt + delete 时会打开一个菜单。此菜单会弹出一个带有各种选项的 GUI。这是 control alt delete(或 CAD)菜单。当您尝试以管理员模式运行任何程序时,会出现一个名为“UAC Consent UI”的弹出窗口,要求用户确认所需的管理员权限。
游戏
我看到这种情况发生的具体程序是任天堂噩梦,一款 2009 年 5 月发行的老游戏。然而,这款游戏很可能是重新编译的,因为游戏内部报告称它是用 Game Maker 8 编译的,而 Game Maker 8 在 2009 年 5 月还不存在。
漏洞利用
由于未知且不清楚的原因,打开 CAD 菜单或 Consent UI 对话框会导致游戏无法执行部分游戏代码。这包括碰撞检测和处理帧速率上限的任何代码。我只能在 Windows 7 上进行检查,但这也已确认可以在 Windows 10 上运行。我会询问是否有人可以在 Windows 8 上运行,但由于 Windows 8 midi 的一些错误,该游戏甚至无法在 Windows 8 上运行。
为什么理解这一点很有用
所以我和其他人都快速通关了这款游戏……或者至少尝试过。我尤其玩得很糟糕。无论如何,这个漏洞实际上可以用于节省通关时间。实际上,我几乎立刻想到了六个地点。
以下是我大约一个月前制作的 TAS 视频,可供参考当前的快速通关路线:[TAS] 任天堂噩梦 24:04 作者:Typhon
该路线有以下几个重点:
- 第一场 Boss 战中的预定死亡。
- 最终的马里奥级别死亡蛋部分。
- 林克利用喷气背包传送到地牢入口后,以最快的速度死去。
- 林克会尽快死亡,从而逃离秘密的 Arwing 关卡。
- 林克使用钩索传送至地牢入口后,以最快的速度死去。
- 让 Hammer 传送到地牢入口后,Link 会尽快死去。
对于其中五个人来说,只需调用一个虫子让它立即掉到地板上就是最快的死亡方式,因此,只需使用虫子就可以节省一点时间,而不需要任何花哨的东西。
但是第二点更有用,影响也更大。马里奥的死亡之蛋环节是整个游戏过程中最难的部分,也是最长的部分,这完全是因为敌人数量众多。玩家大部分时间都花在杀死敌人上。但是,通过调用这个漏洞,玩家可以假设跳跃,然后让所有敌人从地板上掉下来,从而立即杀死房间里的所有东西。这样做可能会将整个游戏时间缩短五分之一。
跳过点 2 实际上已经成为相当长一段时间以来的主要关注点,而找到一种跳过该点的方法可能是当务之急。
因此,我试图从技术层面确定此错误发生的原因,以及如何在准确的时间内复制它(即实际上不打开其中一个侵入性弹出窗口)。
迄今为止的故事
我问过的其他一些人显然对 Game Maker 8.0 引擎的内部结构了解更多,显然这个错误会影响全部Game Maker 8.0 游戏,尽管这并没有说明什么,因为同样,这个错误在当前版本中不再存在。因此,询问开发人员和询问其他熟悉该引擎的人一样有用。
使用一些挖掘工具(不要问我,我不知道),他们发现在主游戏循环中抛出了一个异常,代码为“0EEDFADE”,这显然等同于一些未知的 Delphi 异常。这反过来又导致游戏循环跳过其余的帧执行。Game Maker 8 据说是用 Delphi 编写的,所以它告诉我们的只是收到了一些意外或无效的东西。同样,在这两点之间,他们将异常范围缩小到必须在两者之间发生,他们发现他们能找到的唯一 Windows API 是对 joyGetPosEX 的调用,它显然用于操纵杆功能。显然,即使在没有操纵杆的游戏中,它仍然会被调用。
所以现在我只是想弄清楚这些对话框到底是什么导致操纵杆功能中断,以及是否有更简单的方法来“中断操纵杆功能”。
答案1
Ctrl++Alt组合键Delete,正式名称为安全注意序列,用于打开 Windows 安全对话框安全桌面. 这是一个完全独立的桌面,与所有其他应用程序在其上运行的桌面 ( \Sessions\1\Windows\WinSta0\Winlogon
vs \Sessions\1\Windows\WinSta0\Default
) 1 . 更多信息请查阅在 Microsoft 文档中。
这种行为自 Windows Vista 中引入安全桌面以来就一直存在。默认情况下,UAC 提升提示使用类似的过程。
桌面切换可能会导致某些应用程序出现问题,尤其是那些使用 3D 图形的应用程序。在 Vista 的早期,由于它与早期 WDDM 图形驱动程序的交互方式,它的速度特别慢。
另外,如果您需要打开任务管理器,可以使用 ++ 或右键单击任务栏来打开。Ctrl这不会导致桌面切换。ShiftEsc
1摘自《Windows Internals 7th Ed Part 1》第 7 章