打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
修改 bootmgr
上网搜了好多帖子,目前只实现了更改 \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

完成
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用Bootmgr、Grub4DOS启动管理器制作“包括启动菜单”的ISO镜像(双启)简明教程
Windows Vista系统下如何再安装Windows XP,实现双系统问题
[转帖分享] x86/x64 PE 2.0 增强版 (二合一)
在Windows Server 2008和Vista中增加恢复菜单WinRE
总结一下bootmgr的引导模式(引导dos,nt5,nt6,grub4dos等)
启动配置数据(BCD)存储(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服