电脑技术学习

独家揭秘 他击碎了Vista系统的"防盗窗"

dn001
攻破BIOS难关

  由于虚拟机中采用的是比较通用的Phoenix的BIOS,因此在实际环境中验证可能会比较顺利。然而,当Binbin将华硕的验证数据写入到非品牌机的BIOS里后,却发现并没有像预想的那样让系统激活。

  问题出在哪里呢?通过查阅相关BIOS资料,Binbin发现,其实已经出厂的BIOS是由很多部分组成的,并没有留给用户自主添加ACPI验证数据的地方。在虚拟机中验证之所以成功,是因为使用了一款叫做Phoenix BIOS editor的工具,BIOS数据是整体压缩之后再写入的,而直接写入的话则将破坏原有的BIOS数据。

  如果要完美地写入ACPI数据,就需要知道BIOS数据加密算法,然后进行逆操作,才知道应该加在什么地方,这似乎难度不小。

  不过Binbin想到了另外一种办法,基本原理就是在BIOS的ACPI里面加入一个SLIC表,因为对于大多数BIOS来说,并不允许插入数据。他用替换的方式,换掉许多不重要的数据。

  Binbin指出,对于DIY的兼容机而言,BIOS中是不存在ACPI_SLIC表的,故无法通过SLP 2.0验证。但是,利用SLP2.0存在的漏洞,我们可以使用从OEM硬件、各种品牌机中获取的信息,将SLP2.0的各项验证数据移植到DIY的兼容机中,从而顺利通过验证。

  果然,按照这种思路操作,实验成功了!这台非品牌机中的Vista被成功激活的消息也让网络瞬间沸腾起来。

  职业理想:进入微软

  SLP2.0漏洞造就了第一个堪称完美的Vista破解方法。作为漏洞第一发现者的Binbin,也早已成为众多技术人员崇拜的对象。然而,Binbin本人却没有人们想象的那么激动。

  他对记者表示,自己仅仅是研究了一下SLP2.0的技术弱点。作为一名技术爱好者,他认为“技术是没有正邪之分的,关键看使用的人出于什么目的使用该技术。我认为我所研究的东西只适用于实验室环境,在生产环境中测试、使用这个漏洞,是很不明智的做法,我也不希望自己的研究成果被用于非法目的”。

  他告诉记者说:“我自己就是一个普通的程序员,走上计算机这条路完全是偶然。所有的课程都是自学的,从汇编到计算机体系结构,到现在都还记得1994年最早抱着《电脑报合订本》通宵达旦阅读的情景。”

  在总结微软的激活机制时,Binbin表示:“微软的产品激活(WPA)机制是很安全的,到目前都没有完美的破解。被破解的只是用于OEM厂商激活、部署操作系统的SLP2.0技术。由于OEM产品的特殊性,微软在设计SLP2.0技术时,需要考虑的事项远比用于零售版的产品激活(WPA)机制繁杂,有些方面必须作出让步。这是SLP2.0技术先天不足造成的,今后的SLP技术也很难在这方面有彻底的改善。”

  虽然微软的操作系统通过这些漏洞很容易被攻破,但Binbin仍然认为微软是他心目中最伟大的软件公司。Binbin随后对记者谈起了他的职业理想就是:进入微软公司工作。如果能够实现,这可能才是他最开心的事情。

  Binbin对SLP技术的建议

  1.不要把验证数据放在ACPI中,很多BIOS会将ACPI放置在可写入的内存区域。如果破解程序在操作系统引导前修改了这段内存区域,操作系统内置的反盗版程序很难检测出来。SLP 1.0的验证数据就是放置在只读的内存区域,很难修改。

  2.要严格地对验证数据所在的内存地址进行验证,制定规则,防止厂商将验证数据放置在不安全的内存区域。SLP 1.0会被攻破 ,就是因为有些OEM厂商将验证数据放在了DMI数据区,而DMI数据很容易被写入。

  3.SLP技术被攻破,不是因为算法被攻破,而是验证数据被移植。SLP 1.0 和 2.0 都是这种情况。更多的加入BIOS特征或硬件特征的验证,可以在一定程度上避免被移植。

  4.应当准备好SLP技术被攻破之后的补救措施,整理一份BIOS特征或硬件特征的“白名单”,进行联机验证,这是很保险的做法。

标签: