中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » 其它操作系统综合讨论区 » (转贴)真正Vista完美激活,杜绝MBR失败的危机
作者:
标题: (转贴)真正Vista完美激活,杜绝MBR失败的危机 上一主题 | 下一主题
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『楼 主』:  (转贴)真正Vista完美激活,杜绝MBR失败的危机

作者:wwashington AT boletips and newsmth
时间:2007/04/01

说明:欢迎转载,请保持本文件的完整性,包括本文原始出处和相关链接。
原文:http://bbs.boletips.com/blbbs/viewthread.php?tid=61

昨天我发了一篇文章,是关于如何使用Vista Loader模拟品牌机BIOS的OEM_SLP达到
激活Vista系统的目的。当时我并不知道Grldr.mbr可以直接在Bootmgr里启动Grldr,
再加上Vista Loader的原版和傻瓜包都修改MBR导致长时间黑屏,只能先恢复Ntldr
的引导,然后让Ntldr启动修改过的Grldr,从Grldr里加载Bootmgr,激活成功。

这篇文章是针对原文的改进版,所以读者必须具备相应的基础知识,但是不需要完全
按照原文修改启动分区。如果您对Vista Loader不了解,可以参考下面的文章。

参考:http://bbs.boletips.com/blbbs/forumdisplay.php?fid=17
[原创]我的Vista激活成功,修复MBR故障的笔录

基础知识:

我碰巧在Grub4DOS的官方论坛找到一个最新的Grldr.mbr文件,它可以在Bootmgr和
Ntldr里引导Grldr,这样问题就向着完美解决前进了一大步。因为我们可以通过加载
MBR文件来启动Grldr,就没有必要把Grub的MBR纪录写到硬盘(死机风险很高),也
没有必要把启动区设定为Ntldr的引导纪录。当然,如果已经被Vista Loader搞到不
能启动了,修复系统 fdisk /mbr ; sys a: c: ; winnt 这三个步骤还是要的。

如果要维持 Ntldr 启动请按参考文章做,如果要用 Bootmgr 做引导管理器,可以进
WinXp 之后把 Vista DVD 安装盘的 \Boot\boosect.exe 拷出来,放到一个你可以找
到的目录下,然后进 Cmd 命令行找到所在路径,运行 bootsect/nt60 sys ,重启后
出现 Bootmgr 菜单但不能引导 Vista,重启机器并用 Vista DVD 安装盘修复。

准备工作:

下载最新的Vista Loader(地址在参考文章),并用Notepad编辑install.cmd,查找
"data\bootinst /nt60 %%A",改为"echo REM data\bootinst /nt60 %%A && Pause",
这样做的目的是不要改写MBR从而避免死机的危险。这部分工作跟"修复MBR故障"非常
类似,如果忘了修改脚本而直接使用导致死机,只能按参考文章里的办法解决。

按照Vista Loader的说明安装完毕,您的引导盘根目录会出现一个修改版的Grldr,它
整合了相应的OEM_SLP信息,在Grldr运行时向内存写入欺骗Vista的BIOS资料。同时考
虑到Vista Loader占用了Grldr这个文件名,原版Grub4DOS的Grldr就暂时改名为Grldb
好了,它需要做进一步的修改才能使用,我们把启动菜单的选项做好再改文件。

系统激活:

以管理员的身份运行 Cmd,输入 bcdedit 可以查看当前配置,输入下列指令添加菜单。

注意: 下文所出现的 {id} 其实就是在您每次刚运行完 /create 之后系统返回的数值。

bcdedit /create /d "Vista OEM_SLP by Grldr.mbr_BCD" /application bootsector
bcdedit /set {id} device boot
bcdedit /set {id} path \Grldr.mbr
bcdedit /displayorder {id} /addlast

bcdedit /create /d "Load Grub4DOS by Grldb.mbr_BCD" /application bootsector
bcdedit /set {id} device boot
bcdedit /set {id} path \Grldb.mbr
bcdedit /displayorder {id} /addlast

重启机器,如果直接选 Vista 启动,那么你会发现系统尚未激活,跟什么也没改一样;
如果你先选"Vista OEM_SLP by Grldr.mbr_BCD",屏幕闪耀一下之后回到Bootmgr菜单,
再选择 Vista 启动,那么你会发现系统已经激活,可以用 slmgr -dlv 查看细节。

验收成果。以管理员身份运行Cmd,然后输入bcdedit,您将看到史上最强的 BCD 配置。
关于{ntldr}的partition=D:的原因,是因为Vista把我的引导盘标记为D:盘,而系统盘
标记为C:盘,所以必须这么写。如果引导盘和系统盘是同一个盘,那么通常应该是C:盘。

C:\Windows\system32>bcdedit

Windows 启动管理器
--------------------
标识符              {bootmgr}
device                  unknown
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
displayorder            {ntldr}
                        {current}
                        {b3f58295-ddfb-11db-8f1e-ce7a8ab7e028}
                        {b3f58296-ddfb-11db-8f1e-ce7a8ab7e028}
toolsdisplayorder       {memdiag}
timeout                 30

Windows 旧 OS 加载器
------------------------
标识符              {ntldr}
device                  partition=D:
path                    \ntldr
description             早期版本的 Windows

Windows 启动加载器
-------------------
标识符              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows Vista (TM) Ultimate (已恢复)
osdevice                partition=C:
systemroot              \Windows
resumeobject            {e857bc7a-ddff-11db-a026-806e6f6e6963}

实模式启动扇区
---------------------
标识符              {b3f58295-ddfb-11db-8f1e-ce7a8ab7e028}
device                  boot
path                    \Grldr.mbr
description             Vista OEM_SLP by Grldr.mbr_BCD

实模式启动扇区
---------------------
标识符              {b3f58296-ddfb-11db-8f1e-ce7a8ab7e028}
device                  boot
path                    \Grldb.mbr
description             Load Grub4DOS by Grldb.mbr_BCD

在 Bootmgr 里选择"早期版本的 Windows"会加载 Ntldr,它的启动菜单就是 Boot.ini。
当然您需要注意到,Boot.ini 的内容也会出现在 Bootmgr 里,所以我们可以通过修改
Boot.ini 来达到启动 Grldr.mbr 的目标。说明:direct Grldr 只对 Ntldr 有效。

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(5)\WINDOWS

[operating systems]
multi(0)disk(0)rdisk(0)partition(5)\WINDOWS="Microsoft Windows XP Pro:D" /noexecute=optin

/fastdetect
C:\grldr.mbr="Vista OEM_SLP by Grldr.mbr"
C:\grldb.mbr="Load Grub4DOS by Grldb.mbr"
C:\grldr="Vista OEM_SLP direct Grldr"
C:\grldb="Load Grub4DOS direct Grldb"
C:\Boot\Data\Bootsect.dos="Microsoft Windows 98SE DOS"
C:\Boot\Data\Bootsect.osd="OpenBSD/i386 3.8.0 Release"
C:\Boot\Data\Bootsect.red="Redhat Linux For Ent AS4U2"
C:\Boot\Data\Bootsect.sun="Solaris 9U8 x86 DirectBoot"

持续改进:

刚才说到为了顾及原版的Grub4DOS的使用,已经把原版 Grldr 和 Grldr.mbr 重新命名
为 Grldb 和 Grldb.mbr,但它们并不是随便改个名字就能用的。测试新名字是否能用,
可以把 Grldr 和 Grldr.mbr 移动到其他目录,再重启机器,这样结果才真实可靠。

http://bbs.boletips.com/blbbs/viewthread.php?tid=60
[推荐]WinHex v13.2 SR-11 汉化版,强大的16进制编辑器 (附件是可用的注册机)

想必您已经被无穷多的错误信息吓坏了吧,不要怕,有我在。您先按照上面的地址下载
一个WinHex,然后分别打开 Grldb 和 Grldb.mbr,用 Hex 替换字符串"47524C4452"为
"47524C4442",其实就是替换"GRLDR"为"GRLDB"。修改很简单吧,小心笑掉了下巴。

再次验收。重启系统并且在Grldr/Ntldr/Bootmgr之间来回切换,就是不肯死机,真牛!
请再次注意*.mbr是通用的,Grldr和Grldb只在Ntldr里可用。如果在菜单里碰到 Vista
OEM_SLP 的项目,那么相应的BIOS数据就会被写入内存,只要运行过一次就行,当系统
启动完毕就已经是激活了。如果不论怎么选都不涉及OEM_SLP,那么系统会保持原状。

小结一下:

任何技术成果都是暂时的,不久后就会被更新更强的技术代替。我相信Vista Loader的
作者看到我的文章,一定会研究如何改进脚本,发行通用性更强的新版。至于傻瓜安装
包的作者,也会提供Grldr.mbr的模式和直接写入硬盘MBR这两种做选择。所以,我这边
的研究任务就告一段落了。不好意思,昨晚只顾看电视,弄到熬夜写文章了,抱歉。

我对未来Vista激活的期望,最好是又泄露一个VOL版和一堆正版Key,或者是把OEM版本
和破解(目前最好的是Vista Loader,不排除有新技术产生)直接集成进安装盘,安装时
选择一下,装好后BCD和Boot.ini、两个版本Grldr以及Grldr.mbr都直接能用,爽啊。

2007-4-20 03:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: