无忧启动论坛

标题: 更改bootmgr启动路径\boot\bcd [打印本页]

作者: liuyug    时间: 2011-7-11 15:53
标题: 更改bootmgr启动路径\boot\bcd
上网搜了好多帖子,目前只实现了更改 \boot\bcd 中最后的2个字符“CD”,限制还是很大的,也不够完美。

经过一个星期专研,我最终实现可以更改 \boot\bcd 中任意字符,方法见下。


0. bootmgr 说明
bootmgr 版本必须用 vista sp0, 即原始的,没打过补丁的 vista 的 bootmgr
原因:
目前bootmgr的版本有
Window 7 sp1   CRC32:DE51A3C4
Window 7 sp0   CRC32:EE471B58
Vista    sp2   CRC32:E6CDE422
Vista    sp1   CRC32:6442A4AD
Vista    sp0   CRC32:543E715A

Vista sp0的bootmgr由2部分组成,16位的引导,和32位的bootmgr.exe
vista sp1,sp2,Window 7 sp0,sp1的bootmgr由3部分组成,16位的引导,32位的资源,32位的bootmgr.exe,而且,关键的是,这个32位的bootmgr.exe是经过压缩的,也因此大家最多只能改 \boot\bcd 中最后的2个字符“CD”,其他的字符经过压缩算法,早已面目全非。MS 使用的压缩算法是其内部算法,非公开,目前没有找到能 uncompress/compress 的程序。所以,不能使用这几个版本的 bootmgr

而 Vista sp0 的 bootmgr 中的 bootmgr.exe 是非压缩的,可以清楚看到 \boot\bcd 字样,可以任意更改这几个字符。

1. 文件
将所有W7PE的文件放到目录下
我的目录是 \W7PE
BCD
bcdedit.exe
BOOT.SDI
BOOT.WIM
BOOTMGR
MEMTEST.EXE

2. Vista sp0 的 bootmgr 的修改
a. 去除 checksum
位置 0xE28 ,将 7403 改为 EB08
b. \boot\bcd 路径
位置 0x54B6C ,随意改,但需注意,其字符是unicode编码,显示为".",16进制值为"00"的地方不能改
例如,我的改为 \W7PE\BCD

3. 修改 BCD 的内容
注意,如果只做了第2步,没有做这步,仍然不能启动成功
bcdedit /store bcd /enum all        先查看一下配置,然后依次更改

a. 去除签名
bcdedit /store BCD /set {bootmgr} nointegritychecks yes
b. boot.sdi位置
bcdedit /store BCD /set {your_sdi_id} ramdisksdipath \W7PE\boot.sdi
c. device 和 osdivice
bcdedit /store BCD /set {default} device ramdisk=[boot]\W7PE\boot.wim,{your_sdi_id}
bcdedit /store BCD /set {default} osdevice ramdisk=[boot]\W7PE\boot.wim,{your_sdi_id}

最后运行bcdedit /store bcd /enum all 检查

4. 我用的syslinux引导
LABEL W7PE
MENU LABEL  Win7 PE
KERNEL chain.c32 ntldr=/W7PE/BOOTMGR

完成

5. 限制

区域语言限制:
在bootmgr中,MUI文件的位置为"%s\$s\%s.mui",其真实路径是动态生成的,目前没有找到好的更改方法,所以,bootmgr的多语言问题无法解决。

但可以显示中文字符:
a. bootmgr的0x56EF0处,默认为en-US,改为中文zh-CN
b. bootmgr的0x56804处,各种字体的位置,直接改\boot\fonts

通过这种方法,bootmgr默认菜单是英文的,但自己的菜单,可以显示中文字符


5.1 bootmgr 区域语言限制更改 - 突破限制:
将默认英文区域改成中文,启动盘中需要fonts目录,不需要zh-cn目录

a. 资源文件
用reshacker打开bootmgr相同版本的bootmgr.exe.mui文件,另存为bootmgr.exe.zh.res
用winhex打开bootmgr文件,查找ASCII码MZ,第二个位置,字符为“MZ\90”,将此位置前面部分存为0.bin,将此位置后面部分,包括“MZ\90”,存为bootmgr.exe
用reshacker打开bootmgr.exe,菜单“操作->添加一个新资源”,“打开新资源文件”,选择bootmgr.exe.zh.res,将res文件中的资源一个一个都添加进去,然后将资源文件中所有1033部分删除,只保留2052部分,存盘退出。
合成新的中文版的bootmgr, 命令 “copy 0.bin /b + bootmgr.exe /b bootmgr /b”

注意:bootmgr.exe 和  bootmgr.exe.mui 必须是相同版本的,可以在资源文件中的版本信息看到

b. 语言设置
bootmgr的0x56EF0处,默认为en-US,改为中文zh-CN
c. 字体路径
bootmgr的0x56804处,各种字体的位置,直接改\boot\fonts

5.2 memtest.exe 区域语言限制更改 - 将默认英文区域改成中文:
a. 资源文件
用reshacker打开 memtest 相同版本的 memtest.exe.mui文件,另存为 memtest.exe.zh.res
用reshacker打开 memtest.exe,菜单“操作->添加一个新资源”,“打开新资源文件”,选择 memtest.exe.zh.res,将res文件中的资源一个一个都添加进去,然后将资源文件中所有1033部分删除,只保留2052部分,存盘退出。
注意:memtest.exe 和  memtest.exe.mui 必须是相同版本的,可以在资源文件中的版本信息看到
b. 语言设置
memtest的0x4BAB0处,默认为en-US,改为中文zh-CN
c. 字体路径
memtest.exe 的0x4B55C处,各种字体的位置,直接改\boot\fonts
d. PE文件检验和
更新memtest.exe文件的PE校验和,我用的是stud_pe
e. 去除memtest.exe的签名
bcdedit /store BCD /set {memdiag} nointegritychecks yes

我已经做好的中文版bootmgr和memtest.exe

bootmgr_zh.7z.001.7z (97.66 KB, 下载次数: 972)
bootmgr_zh.7z.002.7z (97.66 KB, 下载次数: 996)
bootmgr_zh.7z.003.7z (97.66 KB, 下载次数: 802)
bootmgr_zh.7z.004.7z (67.25 KB, 下载次数: 761)


因要求附上 vista sp0的bootmgr
BOOTMGR.7z.001.7z (97.66 KB, 下载次数: 767)
BOOTMGR.7z.002.7z (92.27 KB, 下载次数: 677)
下载后,去除最后的.7z,然后用7zip解压

中文版的bootmgr和memtest.exe 截图





[ 本帖最后由 liuyug 于 2011-7-14 11:21 编辑 ]
作者: 527104427    时间: 2011-7-11 16:46
收下了,强人,顶你一下
作者: k71g    时间: 2011-7-12 02:04
希望能提供文件 补齐
作者: 3370123    时间: 2011-7-12 02:09
我记得无忧论坛有个人首先发现的

搜索 BCD
作者: wanghh    时间: 2011-7-12 08:40
☆۩۞۩☆【谢谢提供!】 ☆۩۞۩☆
作者: liuyug    时间: 2011-7-12 10:39
原帖由 3370123 于 2011-7-12 02:09 发表
我记得无忧论坛有个人首先发现的

搜索 BCD



我搜过所有BCD的帖子,只找到更改“CD”的方法,没有更改boot字样的,如果有,请给个链接。
作者: 2010jct1982    时间: 2011-7-12 12:06
好东西,肯定要收藏...
作者: 3370123    时间: 2011-7-12 13:47
http://bbs.wuyou.net/forum.php?m ... 5&highlight=BCD

这里,不过楼主能自己找出规律来,也挺牛的
作者: liuyug    时间: 2011-7-12 14:43
原帖由 3370123 于 2011-7-12 13:47 发表
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=184015&highlight=BCD

这里,不过楼主能自己找出规律来,也挺牛的


不一样的!!


你给的帖子中是说 "在 Boot\BCD 这个路径中我们修改B或者是o后,所有的B或者o都会变成你修改后的字符,就如同变量引用一般"

即 \Boot\BCD ,如果改第一个B为G,那么结果变为 \Goot\GCD  ,注意,只改了第一个B,结果所有的B都变成G

我的 \Boot\BCD ,可以改成任意的字符, 如 改成 \Goot\BCD, 那么结果就是 \Goot\BCD ,后面的B不会变。
作者: 3370123    时间: 2011-7-12 14:58
标题: 回复 #9 liuyug 的帖子
喔?恕我没仔细看帖
作者: ttt0001    时间: 2011-7-12 15:15
非常不错,楼主是个强人!谢谢分享!
作者: jeremy    时间: 2011-7-12 22:25
字体文件路径如何改,这样修改,还是会去BOOT目录查找FONTS目录下的文件
作者: liuyug    时间: 2011-7-13 10:18
在bootmgr 的 0x56804处,是各种字体的位置,直接改\boot\fonts目录。

我没有试过,但应当能行。
作者: jeremy    时间: 2011-7-13 11:29
原帖由 liuyug 于 2011-7-13 10:18 发表
在bootmgr 的 0x56804处,是各种字体的位置,直接改\boot\fonts目录。

我没有试过,但应当能行。

不行啊!.........
作者: ggs    时间: 2011-7-13 12:08
研究一下,回去试试。。。
作者: liuyug    时间: 2011-7-13 16:40
原帖由 jeremy 于 2011-7-13 11:29 发表

不行啊!.........



确实不行,中文字显示为方框。说明已经找到字体,但不能显示字符,有可能是字符集问题,可能找不到mui文件。
mui相关路径,在bootmgr中显示为"%s\$s\%s.mui",真正的路径是动态生成的,目前不知如何改。

不过,如果不需要bootmgr的菜单,那是否为中文,问题也不大

字符集问题变相解决:

写成固定的默认字符集:

bootmgr的0x56EF0处,默认为en-US,改为中文zh-CN

[ 本帖最后由 liuyug 于 2011-7-13 16:58 编辑 ]

ppp.PNG (18.45 KB, 下载次数: 138)

ppp.PNG

作者: liuyug    时间: 2011-7-14 11:23
已经解决中文版问题,见1楼
作者: k71g    时间: 2011-7-15 01:00
如果有个傻瓜软件修改就好了
作者: yhk    时间: 2011-7-15 05:53
强悍哉~~~~~~!
作者: k71g    时间: 2011-7-16 20:08
我使用了,启动蓝屏
作者: liuyug    时间: 2011-7-18 09:55
原帖由 k71g 于 2011-7-16 20:08 发表
我使用了,启动蓝屏


蓝屏  ?? 确认,bootmgr再有问题,也不会蓝屏,蓝屏是系统启动的错误
作者: bank-w3000    时间: 2011-7-18 13:54
无忧人才辈出,感谢楼主的奉献!
作者: genius    时间: 2011-7-18 14:11
好强大,支持你。呵呵
作者: panet8888    时间: 2011-7-18 16:51
手机留爪,晚上回去再!
作者: 2010forever倩    时间: 2011-7-18 21:27
无忧又有技术进步了...
作者: HY    时间: 2011-7-19 12:40
不错,PE根目录双清爽一些了.
作者: xmanweb    时间: 2011-7-19 13:59
标题: 回复 #9 liuyug 的帖子
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=174163
这篇帖子就介绍了vista sp0 bootmgr的修改
但是win7pe如果需要网启的话,这个vista的bootmgr就没办法了啊
作者: wangziqiang    时间: 2011-7-19 14:44
你真的很强啊  辛苦了
作者: 135956    时间: 2011-7-19 15:35
楼主,再搞个软件出来修改啊。
作者: Quam    时间: 2011-7-21 08:01
不错,不错。先下载收藏
以后研究
作者: yanglin    时间: 2011-7-30 11:21
支持 啊 可定义性 强了很多!!
作者: 1e3e    时间: 2011-7-30 11:57
原帖由 liuyug 于 2011-7-11 15:53 发表
上网搜了好多帖子,目前只实现了更改 \boot\bcd 中最后的2个字符“CD”,限制还是很大的,也不够完美。

经过一个星期专研,我最终实现可以更改 \boot\bcd 中任意字符,方法见下。


0. bootmgr 说明
boo ...

win7系统吧,我还在xp中
作者: pznpt    时间: 2011-7-31 05:49
楼主强,学习了,顶!~
作者: meteor    时间: 2011-8-31 16:33
這個版本的Bootmgr不能引導 Win7 VHD,
請問有大大成功嗎?
作者: xwan    时间: 2011-9-18 10:09
支持原创,谢谢分享!

这个帖子似乎放综合讨论区更合适,个人看法,呵呵
作者: 小豪diao    时间: 2011-9-19 10:12
win8的bootmgr楼主也去折腾下嘿嘿
作者: 135956    时间: 2011-10-22 20:04
win7 64位的系统能引导么?
作者: 一只猴子    时间: 2012-1-13 10:50
标题: 回复 #37 135956 的帖子
似乎需要64位的BOOTMGR
作者: go_freak    时间: 2013-1-16 02:31
标题: 按教程修改了,怎么会出现如下错误


[ 本帖最后由 go_freak 于 2013-1-16 02:38 编辑 ]
作者: cszwin    时间: 2015-8-9 11:17
太厉害了
作者: 有阴也有阳    时间: 2015-8-20 19:37
附件的压缩包损坏了,无法打开。

2015-08-20_193544.png (32.22 KB, 下载次数: 62)

压缩包损坏了,无法打开。

压缩包损坏了,无法打开。

作者: 2011大气人生    时间: 2015-8-23 12:51
很详细。
作者: 忍記ninKEE    时间: 2020-5-15 19:03
最近在搞硬盘启动,Win7的系统盘上有boot文件夹,而10pe的ISO里也有boot文件夹,你说bootmgr改成mypemgr没毛病,但改boot文件夹就不能启动,两个boot文件夹是不可能的,看人家微pe的文件夹可以改成wepe,而我一直找不到方法,bootmgr版本太多了,一点问题都怕,现在找sp0的bootmgr木找到,在MSDN下载站下了两个Vistasp0的完整安装版镜像,求大伙们看看行不行




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3