首先,上網(wǎng)百度、搜搜和谷歌搜了好多帖子,目前只實現(xiàn)了更改 \boot\bcd 中最后的2個字符“CD”,限制還是很大的,也不夠完美。經(jīng)過一高人一個星期專研,最終實現(xiàn)可以更改 \boot\bcd 中任意字符,方法見下:
1、bootmgr 說明
bootmgr 版本必須用 vista sp0,即:原始的,沒打過補丁的 vista 的 bootmgr。原因是目前bootmgr的版本有:
Window 7 sp1 CRC32
E51A3C4
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是經(jīng)過壓縮的,也因此大家最多只能改 \boot\bcd 中最后的2個字符“CD”,其他的字符經(jīng)過壓縮算法,早已面目全非。MS 使用的壓縮算法是其內(nèi)部算法,非公開,目前沒有找到能 uncompress/compress 的程序。所以,不能使用這幾個版本的 bootmgr。
而 Vista sp0 的 bootmgr 中的 bootmgr.exe 是非壓縮的,可以清楚看到 \boot\bcd 字樣,可以任意更改字符。
2、文件
將所有W7PE的文件放到目錄下,例如: \W7PE
BCD
bcdedit.exe
BOOT.SDI
BOOT.WIM
BOOTMGR
MEMTEST.EXE
3、Vista sp0 的 bootmgr 的修改
a.、去除 checksum
位置 0xE28 ,將 7403 改為 EB08
b、\boot\bcd 路徑
位置 0x54B6C ,隨意改,但需注意:其字符是unicode編碼,顯示為".",16進制值為"00"的地方不能改。例如:改為 \W7PE\BCD
4、修改 BCD 的內(nèi)容
注意:如果只做了第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 檢查。
5、用syslinux引導
LABEL W7PE
MENU LABEL Win7 PE
KERNEL chain.c32 ntldr=/W7PE/BOOTMGR
完成
6、限制
區(qū)域語言限制:
在bootmgr中,MUI文件的位置為"%s\$s\%s.mui",其真實路徑是動態(tài)生成的。目前,還沒有找到好的更改方法,所以,bootmgr的多語言問題無法解決。但可以顯示中文字符:
a、bootmgr的0x56EF0處,默認為en-US,改為中文zh-CN
b、bootmgr的0x56804處,各種字體的位置,直接改\boot\fonts
通過這種方法,bootmgr默認菜單是英文的,但自己的菜單,可以顯示中文字符。
7、bootmgr 區(qū)域語言限制更改 - 突破限制:
將默認英文區(qū)域改成中文,啟動盤中需要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
8、memtest.exe 區(qū)域語言限制更改 - 將默認英文區(qū)域改成中文:
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