Windows 95 Build 224
| Windows 95 的版本 | |
| 发布名称 | Beta 2 |
|---|---|
| 操作系统系列 | Windows 9x |
| 内核版本 | 4.00 |
| 内部版本号 | 224 |
| 体系结构 | x86 |
| 编译日期 | 1994 年 11 月 3 日 |
| 有效期 | |
| 时间炸弹 | 1995 年 3 月 31 日 (+148 天) |
| 产品密钥 | |
| Beta Site ID | 186349 |
| 密码(Password) | 94730fb34 |
| 关于对话框 | |
Windows 95 Build 224 是 Windows 95 的官方 Beta 2 版本。它有 free 版本和 check/debug 版本。但是,由于缺少 USER32.DLL,此版本的 check/debug 版本不可用且拒绝启动。
尽管发送给测试人员的 CD 上打印了日期,内容文件的时间戳也设置为 1994 年 10 月 28 日,但 PRECOPY2.CAB 中的 layout.inf 文件表明此版本实际上是在 1994 年 11 月 3 日编译的,因此 Microsoft 可能出于未知原因决定故意更改媒体文件的时间戳。
NFO 文件
以下 NFO 文件作为 PWA 版本的一部分包含在内。[1]
NFO 内容
▄▓▄
▄█▄ ▄▀▒▓▌
▐██▄▀▀▄ ▄ ▄▀ ░▒▓
██████▄▀▄ ▄▀▓▌ ▄▀ ░▓▌ ▄▄
▐███████▌▐▌ ▄▀ ▒▓ ▐▌ ░▒▓ ▐▌▐██▄▄ .
▄█████████▌█ ▄▀ ░▓▌ █ ░▒▓▌ █ █████▀▀▄▄ ■
▀▀█████████▌ ▄▀ ░▒▓ ▐▌░▒▓ ▐▌▐██▀ ▄ ▀▄▀
▀████████ █ ░▒▓▌ █░▒▓▌ ▀▄██▌ ▀▄
▌ ▐██████▌ ▐▌░▒▓▀ ▄▀ ▐░▒▓▀ ▄ ▀█▀ █▄
▐▌ ▐ ██████ █░▒▒▀ ▄▀ ▀ ▄▀▄▀ ▐▓░▄ ▄▄ ▐▀▄
────────── ▓▄▀▌ ▐█████▌───▐░▒▒ ▄▀ ▄█▀▀ ───── ▓▒░▐▌ ▀ ─ █▓█ ───-───-─· ·
▐▓ ▀▄█████▀ █▄▀ ▄▀ ▀▄ ▐▓▒ █ ▐▌▒▓▌
▄▓▓████▀ ▐▀ ■ ▓▒░ ▐▌ ▄▀ ░▒▓
▄▓▓██▀▀ ▄▄ ▄▀ . ▐▓▒░ ▀▄ ▀▄ ░▓▌
▐▓▓▀ ▄▓ ▀▀▄▄▄ ▓▒░ ▄▀ ▀▄▒▓
▓▒▌ ▐▓▒ ▀▀▀▄ ▐▓▒░░ ▄▀ ▀
▐▓▄ █▓▒ ░▄▀ ▀▓▓▒▒░▀
▀▓▀ ▐▓▒░ ░▄▀ ▀▓▀ ..R.Noble
█▓▒░░░▄▀
█▓▒▒▒▀ ... Pirates With Attitudes
▐▓▓▒▀
▄▓▓▀ Proudly Presents ...
═══════════════▀═════════════════════════════════════════════════════════════
│ ⌐ Windows 95 Official Beta 2 Build 224 at 11-09-94 16:00 ¬ │
│───────────────────────────────────────────────────────────────────────────│─
│ Supplier .....: Dark Lord │ Type .....: Win. Comp │
│ Cracker ......: N/A │ Video ....: │
│ Packager .....: Les Manley │ Audio ....: │
│ Protection ...: S/N │ Rating ...: [■■■■■■■■■-] │
═══════════════════════════════════════════════════════════════════════════════
There is a protection on this one to like every other version's on W95
NTA's user id is working on this one to..
BETA ID: 162330 Location:01a74a138
Special Note: We're all thinking of you Blackhawk! Hope you get
well real soon....
In the mean time, Snakes Place will be acting World HQ
-/ This is PWA -\
┐──────────────────┐────────────────────────────────────────-- - - ·· · ·
│ President .......│ Orion
└──────────────────┐────────-───- -- ·· ·· ·
│ Council .........│ Blackhawk, Dark Lord, Les Manley, Satman, Snake
└──────────────────┐─────────────────--- - - · · ·· ·
│ Senior Members ..│ Gordon Gekko, Rambone, Raw Liquid, Vigilante
└──────────────────┐─────────────────--- - - · · ·· ·
│ Members .........│ Charlie, Chowdery, DreamWEaver, Gumby, Ixcalthar,
│ │ Kracken, Marlenus, Mr. Eagle, Roland of Gilead, Skybum
│ │ Snidely Whiplash
└──────────────────┐─────────────────--- - - · · ·· ·
│ Affiliate .......│ Ares, Defcon-4, Drew, Mad Wizard, Magic Design,
│ Programmers ...│ Soul Rebel, Straight Jacket
════════════════════════════════════════════════════─════─═───-──-─-- ·· · ·
⌠ ────────────────────────────────────────────────────────────────────────────
│ Bulletin Board Name······│ Status······Nodes │ AC· │ SysOp ·············· │
───────────────────────────│───────────────────│─────│────────────────────────
│ Assassins' Guild ······· │ World HQ ····[11] │ XXX │ Blackhawk / R.Liquid │
│ Snake's Place ·········· │ U.S. HQ ······[4] │ XXX │ Snake ·············· │
│ Second Front ··········· │ European HQ ··[4] │ +XX │ Les Manley ········· │
───────────────────────────│───────────────────│─────│────────────────────────
│ Boner's Domain ········· │ Member Board ·[4] │ XXX │ Rambone ············ │
│ GetaWay ················ │ Member Board ·[5] │ +XX │ Macro Nit ·········· │
│ Falcon's Eye ··········· │ Member Board ·[5] │ XXX │ Ixcalthar ·········· │
│ Origin Unknown ········· │ Member Board ·[2] │ XXX │ Satman ············· │
│ Rising Sun·············· │ Member Board ·[1] │ XXX │ Orion ············· │
│ Velvet Underground ····· │ Member Board ·[2] │ XXX │ Vigilante ·········· │
───────────────────────────│───────────────────│─────│────────────────────────
│ Belly of the Beast······ │ Affiliate ····[1] │ 603 │ Sulfuric Acid ······ │
│ Warez Shack ············ │ Affiliate ····[2] │ 404 │ Reich ·············· │
│ Access Denied ·········· │ Affiliate ····[3] │ 619 │ Criminal ··········· │
═══════════════════════════════════════════════════════════════════════════════
If you are going to do it ... Do it with an ATTITUDE!
Please note that PWA is NOT accepting pay sites of any nature.... We're
in this for fun and entertainment, not to try to make ourselves rich. :)
────────────────────────────────┤ Final Note ├─────────────────────────────────
║ Support the software companies! If you enjoy using a program or using a ║
║ Util, consider buying it! Someone's got to make it worth the programmer's ║
║ effort to keep up the high standards... They made it, so they DESERVE it! ║
───────────────────────────────────────────────────────────────────────────────
Bug
Checked/debug 版本
在讨论问题的原因之前,让我们首先获得有关 free 和 check/debug 版本的 USER.EXE 的更多信息,因为蓝屏死机错误发生在 USER.EXE 的内存范围。
值得一提的是,所有其他调试文件都运行正常,系统可以在 check/debug 版本的 USER.EXE 被替换为 free/零售文件的情况下启动。但是我们不会得到任何提到版本是(调试)的声明,也不会在屏幕右下角看到桌面水印,上面写着“Debug Windows 4.00.224(调试 Windows 4.00.224)”,因为这些字符串位于 USER.EXE 本身。
因此,通过使用 check/debug 版本的 USER.EXE 将终端连接到 WDEB386 来测量系统在启动过程中发生的大量活动,并跟踪它可能出错的位置,我们最终确定了 USER32.DLL 中的以下代码:
013F:BFF64320 MOV EAX,DWORD PTR [BFF6614E] 013F:BFF64325 MOV AX,WORD PTR [EAX+0000024E] 013F:BFF6432C SUB AX,0EAA 013F:BFF64330 CMP AX,0001 013F:BFF64334 SBB EAX,EAX 013F:BFF64336 NEG EAX 013F:BFF64338 RETD
查看 kernel-debugger 中的代码,它从中获取信息的区域(即存储在 DS:BFF6614E + 0x24E 中的地址)被认为是来自文本:“Status = .Terminate = ”,然后从中减去 0xEAA 并取反,看起来它是问题所在的地方,因为在它返回之前,AX 是 00000000。当我们手动将其设置为 1(r ax=1)并继续启动版本时,它显示了 GUI。
但我们仍然遇到了 Trap14(0x0E)。这次的原因是由于地址无效:
Trap 14 (0EH) - Page Fault 0004, Not Present, Read Access, User Mode AX=91EFA600 BX=0066FA96 CX=815E173C DX=00040990 SI=00540494 DI=0066FBA0 IP=BFF6467E SP=0066F7B8 BP=0066FA18 CR2=91EFA646 CR3=003EE IOPL=0 F=-- -- CS=013F SS=0147 DS=0147 ES=0147 FS=1CBF GS=1B57 -- NV UP EI NG NZ NA PE NC 013F:BFF6467E MOVZX EAX,WORD PTR [EAX+46] DS:91EFA646=INVALID
回顾此行之前的代码,我们看到了这一点:
013F:BFF6468D MOV EAX,DWORD PTR [BFF6614E]
所以,现在我们知道这个地址(BFF6614E)与这个问题有重要关系,如果不是这样的话。
这个地址后来被识别为 USER32.DLL 的共享表地址,它的指针是 USER.EXE 中的代码段 21,所以现在我们需要对两个 USER.EXE 做一个比较。
感谢 Watcom Binary 文件转储器(wdump.exe)提供有关 USER.EXE 的详细报告。我们获得了有关此特定细分段的以下信息:
- free 版本的
USER.EXE中的段21h从文件中的偏移量0x67440开始,大小为0x452,分配为0xEAA。 - check/debug 版本的
USER.EXE中的段21h从文件中的偏移量0x7E080开始,大小为0x992,分配为0x13EA。
在 HxD 的帮助下,我们从文件中复制/粘贴段并进行比较,我们发现在 free 版本的 USER.EXE 中段本身的数据保留区域的开头从 0xAD 开始,而在 check/debug 中,它从 0x37B 开始。所以现在我们有了以下两条线索:
- free 和 check/debug 版本的
USER.EXE分配之间的差异为0x13EA - 0xEAA = 0x540。 - 两个
USER.EXE之间的数据位置之间的差异为0x37B - 0xAD = 0x2CE。
现在,通过查看代码,我们可以想象以下内容:如果 free 版本的 USER.EXE 中 0xAD 和 0x452 之间的所有指针都应指向段中备用区域中的某个位置,并且 0x452 和 0xEAA 之间的指针应指向操作系统在段数据之外的额外分配,那么在 Check/debug 版本中,USER.EXE 应该有其相应的位置。
现在我们切换到 IDA。我们将 USER32.DLL 加载到其中,并搜索所有 BFF6614E 其中的代码,我们得到了大约 20 个结果。我们现在要做的是:
- 我们查找具有此布局的任何代码:
MOV reg, DWORD PTR [BFF6614E] ADD reg, offset
或
MOV reg1, DWORD PTR [BFF6614E] MOV reg2, (D)WORD PTR [reg1+offset]
- 现在我们看一下“偏移量”值。如果它介于
0xAD和0x452之间,我们需要添加0x2CE。如果它介于0x452和0xEAA之间,我们应该向它添加0x540,如果它超出了0xEAA(例如,0x10000是我们的结果之一),那么这应该保持不变,因为它现在指向另一个部分,这可能是正确的。
- 通过使用 HxD 手动编辑可以满足我们需求的大多数结果,此版本可以启动并正常工作,而不会出现任何问题。
图库
-
安装程序初始化
-
安装准备 Windows 目录
-
开始复制文件
-
复制文件 1
-
复制文件 2
-
首次启动时全新安装的桌面
-
演示 1
-
演示 2
-
系统属性
-
Checked/debug 版本
-
安全关机屏幕
其他
-
驱动程序开发套件 CD
-
英语零售套件 CD
-
国际版本 CD
-
软件开发套件(SDK) CD
-
Structures Trial Program(结构试验程序)CD(未转储)
-
Beta 2(含开发工具)(未转储)
