‎Windows Vista Build 5000.0.vbl_core.040808-2000

来自 WinStory Wiki
跳转到导航 跳转到搜索
5000.0.vbl_core.040808-2000
Windows Vista 的版本
操作系统系列Windows NT 系列
内核版本Windows NT 6.0
内部版本号5000
修订版本号0
体系结构x86
内部版本实验室vbl_core
编译日期2004 年 8 月 8 日
有效期
时间炸弹2005 年 8 月 3 日 (+360 天)
已知 SKU 版本
Professional
产品密钥
TCP8W-T8PQJ-WWRRH-QH76C-99FBW
关于对话框

Windows Vista Build 5000.040808-2000 是 Windows Vista 的版本。2020 年 1 月 23 日,UX.Unleaked 博客创始人 Grabberslasher 在帖子上列出了此版本,指出此版本将发布到 BetaArchive 的 FTP 服务器,并于 2020 年 1 月 26 日与 Build 4048此版本的其他编译Build 5001 一起在他的 33 个 Longhorn/Vista 版本的第三组中发布。[1]

默认情况下,此版本有一个严重的 bug,即一旦 Windows 切换到图形模式,它就会挂起,最终出现稳定的蓝色或黑色屏幕,因此在正常情况下无法安装此版本。

新增功能和更改

Bug 分析

模块名称:win32k.sys

原因:未初始化的变量,导致 win32k 引发 Access Violation 异常(通过读取 null 指针)并在没有任何通知的情况下失败。

当 Windows 加载时,它只显示空白的蓝色或黑色背景,没有任何光标或水印。键盘中断也被卡住/未注册。首先检查显示内核空闲循环运行良好并处理中断。WinDbg 中没有异常或错误检查,因此下一个检查是在 nt!ExRaiseStatusnt!ExRaiseAccessViolation,这显然是 win32k 调用并迁离它所在的函数的内容。根据下方的堆栈,它要么在 win32k!EngFreeModule+0x5c9(前面的指令),要么是被调用的函数调用了它:

f75d6d24 nt!ExRaiseAccessViolation
f75d6d48 win32k!EngFreeModule+0x5ce
f75d6d50 win32k!EngFreeModule+0x4b5
f75d6da0 nt!KeReleaseInStackQueuedSpinLockFromDpcLevel+0xb14
f75d6da4 ntdll+0x18c3c
f75d6da8 0x75a69626

检查代码,它正在调用位于win32k!EngMulDiv+0x29c0 的函数:

win32k!EngFreeModule+0x5b1:
bf8a0581 e84a5effff      call    win32k!EngMultiByteToUnicodeN+0x4310 (bf8963d0)
bf8a0586 893530079cbf    mov     dword ptr [win32k!HT_Get8BPPMaskPalette+0x30bb0 (bf9c0730)],esi
bf8a058c 8935cc219cbf    mov     dword ptr [win32k!HT_Get8BPPMaskPalette+0x3264c (bf9c21cc)],esi
bf8a0592 ff1500119abf    call    dword ptr [win32k!HT_Get8BPPMaskPalette+0x11580 (bf9a1100)]
bf8a0598 50              push    eax
bf8a0599 e8e280f8ff      call    win32k!EngMulDiv+0x29c0 (bf828680)
bf8a059e 8bd8            mov     ebx,eax   <-- The return address in the stack, second frame (win32k!EngFreeModule+0x5ce)
bf8a05a0 3bdf            cmp     ebx,edi

在此过程中,使用逐行跟踪(最终调用 ExRaiseAccessViolation)在以下部分中找到:

win32k!EngMulDiv+0x2b62:
=== bf828822 3b0d9c219cbf    cmp     ecx,dword ptr [win32k!HT_Get8BPPMaskPalette+0x3261c (bf9c219c)] ds:0023:bf9c219c=00000000 ===

win32k!EngMulDiv+0x2b68:
bf828828 0f8721fcffff    ja      win32k!EngMulDiv+0x278f (bf82844f)      [br=1]

win32k!EngMulDiv+0x278f:
bf82844f ff1580109abf    call    dword ptr [win32k!HT_Get8BPPMaskPalette+0x11500 (bf9a1080)] ds:0023:bf9a1080={nt!ExRaiseAccessViolation (809849aa)}

Build 5000.040809-2000win32k.sys 相比,win32k!HT_Get8BPPMaskPalette+0x3261c (bf9c219c) 在此版本的 win32k.sys 中的是 7fff0000 而不是 00000000。此时,已查明故障的位置。通过与 Build 5000.040808-2000 的 win32k.sys 进行一些额外的比较,发现此地址被填满了:

解决方法

  1. win32k.sys 替换为 Build 5000.040809-2000 的副本,将其与此版本 win32k.sys 进行比较,结果发现这是唯一的更改,它将像修补后一样运行。
  2. 使用 WinDbg:进入会话后,键入:
    ba e1 bf9c73b3 "r eax=7fff0000;e bf9c219c 00 00 ff 7f;gc"
现在,它将调整此地址的内容并继续。

Bug

Windows 资源管理器

Windows 资源管理器中的详细信息窗格无法正常工作,而正常工作的窗格和任务无法打开或关闭。在控制面板中,它们在加载后也会很快消失,因此几乎不可能切换到经典视图。这是因为此版本的 NT 内核版本是 6.0。

全新安装体验

在到达 OOBE 的第二页之前,全新安装体验中的动画“问号”助手不会显示,这可能是由于 Microsoft Agent 技术本身的 bug。

Windows Media Player

Windows Media Player 中的可视化效果无法正常工作。

图库

引用资料