1、Windows 95抖动图像 摘要该文剖析了Windows95的部分文件,给出了人们很感兴趣的用户定做启动徽标和关机图像的方法,并使其显示启动徽标抖动和变色。 一、引言 Windows95以更新更好的界面展现在用户面前,而给人印象最深的是表明其是"彻底"图形界面的引导及结束时的标志图形。Windows95使系统由图形引导启动并在图形界面中关闭,系统在显示微软启动徽标的同时进行初始化,在显示等待信息的同时完成系统退出并以一个图形化的提示信息结束系统工作。此外,Windows95还为旧DOS程序的运行设计了很好的图形化界面,从而使系统的整个工作过程完全可以脱离过去的命令行方式
2、本文介绍这些界面图形的定制和使启动封面图形抖动变色的方法。 二、Windows95的三幅界面图 Windows95用三幅图完成其初始化和关闭传递信息工作,即启动徽标、封底1、封底2。其中封底1和封底2的图形是两个256色的位图文件,名字分别为和,存放在Windows的工作目录下,负责这两个图形显示的程序分别是和,它们在打开相应的图形文件后分别作文件格式检查。 的检查段代码为: -u3b683b83 0AF4:3B68813F424DCMPWORDPTR[BX],4D42 0AF4:3B6CF9STC 0AF4:3B6D75B9JNZ3B28 0
3、AF4:3B6FBBCE40MOVBX,40CE 0AF4:3B72833F28CMPWORDPTR[BX],+28 0AF4:3B7575F5JNZ3B6C 0AF4:3B77837F0C01CMPWORDPTR[BX+0C],+01 0AF4:3B7B75EFJNZ3B6C 0AF4:3B7D837F0E08CMPWORDPTR[BX+0E],+08 0AF4:3B8175E9JNZ3B6C 0AF4:3B8360DB60 寄存器BX中装的是打开成功的文件首地址的偏移值,通过对比位图文件的首部结构,我们可以立即得到所打开的文件是一个非压缩、位
4、面数是1、256色的位图图像文件。实际上文件确实是一个完整的位图文件,可以用Paintbrush编辑,它显示封底2的信息。因此我们可产生相应格式的位图文件取代,试验证明完全可行。 对也作类似处理,只是对位图标志域检查对比的部分语句不连续,其各项检查如下: debuguserexe -u5ada:abb8 5ADA:ABB8813F424DCMPWORDPTR[BX],4D42 -u5ada:abc4 5ADA:ABC4833F28CMPWORDPTR[BX],+28 -u5ada:abcb 5ADA:ABCB837F0C01CMPWORD
5、PTR[BX+0C],+01 -u5ada:abd3 5ADA:ABD3837F0E08CMPWORDPTR[BX+0E],+08 其中寄存器BX中为打开的存储首址。由此可见,可以用相应格式的位图来取代用作封底1的显示。 值得注意的是,显示时自动按设定的屏幕分辨率来做全屏幕显示,对640×480、256色的屏幕,其位图大小最好设定为320×400像素。 三、启动徽标封面的定做方法 Windows95的封面没有独立文件形式的位图文件,这与对的处理和对的处理不同。笔者在剖析引导文件的过程中发现,Windows95的启动封面徽标是嵌入在引导文件中的,并经DBLSP
6、ACE压缩过,图像数据区长度为64KB。在笔者剖析的Windows95版本中,图像数据占据~344扇区,数据内部有多处"DS"标识,这是DBLSPACE压缩文件的标志,由于DBLSPACE是分段校验压缩文件,因此,即使此区内有一个字节的改动也会造成图像的大幅破坏。在上述中,图像显示执行 代码部分起始于以"DBLSBIN$"标志的地方并占据110-112扇区。由于DBLSPACE的压缩文件很复杂并分段校验,使我们不能像对的那样通过改动组合文件或重编的部分代码来定做启动封面,但可以在中以Logo=0来消隐显示。关于配置文件的设定已有文献可查,本文附录2简述了其配置设定选择。 实际上,启
7、动封面也是可以定做的。笔者在分析的过程中发现,在显示内部嵌入封面前先试图打开一个在引导目录下名为的文件,若打开失败则转显示内部嵌入封面,若打开成功则做文件格式检查,其要求的格式比对的检查条件苛刻。 对检查的代码如下: -ude0e 12B9:DE0E813C424DCMPWORDPTR[SI],4D42 12B9:DE120FDB0F 12B9:DE13854801TESTCX,[BX+SI+01] 12B9:DE1683C60EADDSI,+0E -ude19 12B9:DE19833C28CMPWORDPTR[SI],+28 -
8、ude20 12B9:DE20837C0C01CMPWORDPTR[SI+0C],+01 -ude28 12B9:DE28837C0E08CMPWORDPTR[SI+0E],+08 -ude30 12B9:DE30817C044001CMPWORDPTR[SI+04],0140 -ude39 12B9:DE39817C089001CMPWORDPTR[SI+08],0190 -ude42 12B9:DE42837C1000CMPWORDPTR[SI+10],+00 从以上代码我们可以立即看出,所打开的文件是一个非压缩、幅度320×40
9、0、位面数为 1、256色的位图文件。因此,可以用Paintbrush等工具形成一个256色非压缩、320像素×400像素的位图文件并命名为,将其放在引导目录下即可。要求的格式恰好与及的格式一致。作为验证,可将或命名为并放在引导目录下,实验证明完全可行。如果引导目录下有名为的文件,但没有通过上述所有检查,则拒绝显示并且也不再显示内部嵌入的徽标封面。 四、撤销对的格式检查并形成抖动变色的徽标封面用上述方法显示的外部封面图像是静止的,而中的图像下面具有一个滚动的颜色条,如下的方法则可以使图像颜色变化抖动。 如果去掉引导目录下的,则内嵌的图像也可以做到整幅图面"彩云流动",具有很强
10、的动感。位图的抖动变色是由处理的,其有关处理标志嵌入到上面对的判断语句内,因此将相关的语句作一下改动即可。方法为:用PCTOOLS或其它工具找到下面有下划线的部分,将其均改写为16进制机器代码90,在首尾之间共60字节,其中含有一些代码在上文的反汇编中并未列出。 -dde00 12B9:DE000093BA0200E8D602-0F8252018BF281 3C..........R.... 12B9:DE10424D0F85480183C6-0E833C280F853E 01BM..H.....<+隐藏+只读+卷标=VFAT的文件名属性,并利用多个目录项
11、区将长文件名连续存放。为了防止数据丢失,DOS7屏蔽了绝对磁盘写INT26H,而PCTOOLS等工具的EDIT功能是调用INT26H进行写盘的的,若在硬盘上改动会造成系统死锁而取消写盘,在软盘上则没有这个问题,因此建议对的修改在系统软磁盘上进行。 对DOS7的系统软盘形成很容易,在DOS7下初始化的磁盘,只将、、COM-拷进即可引导Windows95,这是由于DOS7有更精巧的BOOT引导区,引导文件可以不连续存放、不占起始簇、文件名项不是第一目录项。 六、附录:的配置和位图文件结构 附录1:本文涉及到的位图文件首部重要域 偏移长度 标识信息 00H2424
12、DH即"BM" 0EH4位图信息头大小28H=40字节 12H4位图宽度像素数4001H=320个像素 16H4位图高度像素数9001H=400个像素 1AH2位图目标设备位面数1 1CH2位图阵列每像素所需位数,可取值为 1:单色,4:16色,8:256色,24:16G色 1EH4位图压缩标志,可取值:0:未压缩,1:行程压缩8位位图,2:4位压缩位图因此本文所读的位图是非压缩、位面数为1、256色、宽320像素、高400像素的位图。 附录2:中的配置选择 [Options] Logo=1/0;1:显示徽标,0:消隐徽标 Bo
13、otGUI=1/0;1:启动后直接引导视窗,0:启动后显示DOS提示符 Network=1/0;1:网络已安装,0:未安装 BootWin=1/0;1:引导视窗系统,0:引导旧的DOS系统 BootDelay=2;1:StartingWindows95标志延迟可以改成它 值,0:不显示 BootKeys=1/0;1:激活启动控制功能键F4/F5/F8,0:屏蔽启动功 能键 DrvSpace=1/0;1/0:加载/不加载磁盘压缩程序 Dblspace=1/0;1/0:加载/不加载磁盘压缩程序 DoubleBuffer=1/0 ;1:需为不兼容设备保留常规内存,0:不保留[Paths] UninstallDir=D: ;取消安装驱动器,其根目录上有2个用于恢复的文件 WinDir=C:Windows ;工作目录 WinBootDir=C:Windows;启动目录 HostWinBootDrv=C: ;所在磁盘 对不同的安装设置,上面所示可能有的没有,可以对进行编辑。Windows 95抖动图像






