日期:2014-05-17  浏览次数:20976 次

困扰了我数个昼夜的Windows 7 “幽灵现象”【仍未解决,待高人指点】


【基本任务】

将Windows 7 旗舰版 中文简体版x64 的登录画面下部的“Windows 7 旗舰版”商标更换为个性化的标识。

【基本过程】

(1)准备好一份350x50(像素)的带有透明属性的位图(Bitmap),此图记为“AAA”。
(2)将“Take Ownership”或“管理员取得所有权”注册表项文件(或同类工具)导入Windows注册表。
(3)对“C:\Windows\Branding\Basebrd”文件夹实行“Take Ownership”或“管理员取得所有权”,以实现对该目录的控制权。
(4)以管理员身份执行“Resource Hacker”或同类工具,打开“C:\Windows\Branding\Basebrd\zh-CN\basebrd.dll.mui”。
(5)用位图“AAA”来更换basebrd.dll.mui文件中的“位图-120”资源。
(6)保存“basebrd.dll.mui”。

执行到这一步的结果是:无效,Windows登录画面下部的标识(下简称“登录标识”)没有被更换。—— 幽灵现象之一。

…… 不知道是触发了什么操作 —— 可能是中途运行了一次Windows Update所触发的 —— 登录标识发生了变化,成了“AAA”。

【接下来的任务】

把“AAA”更新为“BBB”。

【过程】

同上。

结果是:无效,登录标识仍为“AAA”。—— 幽灵现象之二。

【到底是哪个文件起了作用?】

删除“C:\Windows\Branding\Basebrd\basebrd.dll”文件(不是\zh-CN\basebrd.dll.mui),结果是:登录标识消失。

然而,不论对“C:\Windows\Branding\Basebrd\ zh-CN”或“\en-US”文件夹及其里面的文件进行什么操作(包括重命名、删除),登录标识都不会发生变化;只有删除“C:\Windows\Branding\Basebrd\basebrd.dll”文件,登录标识才会消失,而一旦还原该文件,登录标识又出现,而且一定仍然是“AAA”。

这样看来,登录标识只跟“C:\Windows\Branding\Basebrd\basebrd.dll”文件有关(这就与“基本过程”的原理相矛盾),接下来的事情,就更要命了:

利用“干净的”(系统原本的)basebrd.dll文件替换“C:\Windows\Branding\Basebrd\basebrd.dll”,登录标识居然没变化,仍然是“AAA”;若删了该文件,登录标识就消失 —— 也就是说,只要有basebrd.dll文件(不论内部具体资源是什么),登录标识就一定是“AAA”;只要没有basebrd.dll文件,登录标识就没有。—— 幽灵现象之三。

进一步“解剖”“C:\Windows\Branding\Basebrd\basebrd.dll”文件,利用“Resource Hacker”工具将该文件中的资源清空,登录标识消失。这样看来,得到一个结论:只要basebrd.dll存在且保留了资源格式,登录标识就一定是“AAA”;而如果basebrd.dll不存在或该文件中的资源格式清除,则登录标识就消失。

综合上述现象,就有了一个猜想:这个Windows系统对“C:\Windows\Branding\Basebrd\basebrd.dll”的“完整性”有一个“定性”的判断机制,而不是“读取/解析/调用”机制。当Windows系统判断“C:\Windows\Branding\Basebrd\basebrd.dll”具有完整性的时候,它就会调取系统中“另外某个地方”所保留的“AAA”资源,否则就不调取。

这样看来,就又必要把存放着“AAA”资源的“另外某个地方”找出来。遗憾的是, “AAA”的位图文件被我一早就丢弃了,无法再次获得“AAA”的“特征码”。也就是说,如果能截取一段位图“AAA”的代码,可以利用全盘十六进制扫描工具,将“另外某个地方”找出来。

那么,退而求其次,设想“C:\Windows\Branding\Basebrd\basebrd.dll”这个文件,在系统的某个地方有一处“影子”文件(或许就是存放着“AAA”资源的地方)。那么,搜索整个系统盘,只能搜索到“C:\Windows\Prefetch”和“C:\WinSXS”文件夹里面,有与“basebrd.dll”或“basebrd.dll.mui”有关的文件,将它们全部删除,并关闭Windows系统的“预读机制”。情况照旧,登录标识仍然为“AAA”。

以上所讲述的,就是Windows 7 “幽灵现象”的全部内容。

这个“幽灵现象”困扰了我数个昼夜,仍未破解。

期盼各位大虾、高人,不吝赐教、指点迷津。

非常感谢!




------解决方案--------------------
照楼主的改过,第一步就没出现楼主说的异常。由于没有 32 位的 bmp 编辑软件,是直接在原导出位图上修改的,将开头的几个字节用 ff 填充了;再导入会那个文件;开机到登录界面时,下面就有段白线了。修改是在 PE 环境下做的。
从道理上来说,是不应该出现楼主的情况的。比较的可能就是系统文件保护的作用?如果是指定的一个图片文件资源,系统在其它地方有额外的资源保存是可能的;纯粹的一个文件里的图片资源,不应该再被提出来另行保存的。可用也在 PE 环境下,将这几个地方的文件,甚至 Cache 目录下的,对比下,重新替换下再看看。