TONT 40373 欺骗WHQL驱动认证流程

本产品(的送测版)已通过认证,成为×媒体的推荐产品!

原文链接:https://blogs.msdn.microsoft.com/oldnewthing/20040305-00/?p=40373

In a comment to one of my earlier entries, someone mentioned a driver that bluescreened under normal conditions, but once you enabled the Driver Verifier (to try to catch the driver doing whatever bad thing it was doing), the problem went away. Another commenter bemoaned that WHQL certification didn’t seem to improve the quality of the drivers.

在我早先一篇文章的评论区里,有人提到某硬件的驱动在日常使用中会引起蓝屏,但一旦你启用了驱动程序验证程序(译注:\Windows\System32\verifier.exe)(用来试图抓驱动所做的任何坏事的现行),问题就消失了。还有另一位抱怨说WHQL似乎并没有提高驱动程序的质量。

Video drivers will do anything to outdo their competition. Everybody knows that they cheat benchmarks, for example. I remember one driver that ran the DirectX “3D Tunnel” demonstration program extremely fast, demonstrating how totally awesome their video card is. Except that if you renamed TUNNEL.EXE to FUNNEL.EXE, it ran slow again.

显卡驱动会不择手段地在竞争中胜出。所有人都知道他们在跑分测试里会作弊(译注:链接已失效,说的大体上就是某些显卡配合驱动在3DMark里作弊的事),例如,我记得有一个驱动在运行DirectX『3D管道』的演示时跑得贼快,以展示其显卡的超凡性能。然而只要你把(测试程序的文件名)TUNNEL.EXE改成FUNNEL.EXE,那贼快的速度一下子就不见了。

There was another one that checked if you were printing a specific string used by a popular benchmark program. If so, then it only drew the string a quarter of the time and merely returned without doing anything the other three quarters of the time. Bingo! Their benchmark numbers just quadrupled.

还有另一个例子是,(某显卡驱动)会检测你是否在(向屏幕)输出某跑分软件所拥有的特定字符串,如果有的话,那驱动就会指挥显卡只在1/4的时间内描画那个字符串,而在剩下的3/4时间内什么都不做就返回。好耶!跑分的分数就这么乘以四了。

Anyway, similar shenanigans are not unheard of when submitting a driver to WHQL for certification. Some unscrupulous drivers will detect that they are being run by WHQL and disable various features so they pass certification. Of course, they also run dog slow in the WHQL lab, but that’s okay, because WHQL is interested in whether the driver contains any bugs, not whether the driver has the fastest triangle fill rate in the industry.

不论如何,类似的把戏在把驱动提交给WHQL测试的过程中已经屡见不鲜了。某些肆无忌惮的驱动会检测它是否在被WHQL实验室检测,是的话就关闭某几项功能以通过测试。当然了,在WHQL实验室里,这些硬件跑得慢如狗,但是没关系,因为WHQL只关心驱动是否包含bug,而不关心这个驱动是否达到了业界最高的三角形填充速率。

The most common cheat I’ve seen is drivers which check for a secret “Enable Dubious Optimizations” switch in the registry or some other place external to the driver itself. They take the driver and put it in an installer which does not turn the switch on and submit it to WHQL. When WHQL runs the driver through all its tests, the driver is running in “safe but slow” mode and passes certification with flying colors.

我所见到的最常见的作弊方式是驱动会检查放置在注册表中、或者不与驱动文件放置在一起的、类似『启用某些含糊不清的优化』之类的开关,然后把驱动打包成安装程序,这个安装程序被配置为不会打开这个『开关』,然后提交给WHQL进行测试。当WHQL实验室将这个驱动进行一系列测试时,这个驱动是运行在『好但慢』的模式下,以完美的成绩通过了所有测试。

The vendor then takes that driver (now with the WHQL stamp of approval) and puts it inside an installer that enables the secret “Enable Dubious Optimizations” switch. Now the driver sees the switch enabled and performs all sorts of dubious optimizations, none of which were tested by WHQL.

接下来,开发商就会拿着这份已经盖了『通过WHQL测试』印章的驱动,把它打包进安装程序里,这次安装程序被配置为会『打开』那个『启用某些含糊不清的优化』的开关。现在驱动一眼就会看到那个开关被启用了,于是使出了隐藏着的各种乱七八糟的优化,而这些优化没有一项是经过WHQL测试的。

Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

 剩余字数 ( Characters available )

注:请不要在评论中插入任何链接,否则将自动被识别为垃圾评论,博主将完全看不到。

Notice: please DO NOT add any links in your comment, otherwise it would be identified as SPAM automatically.

*