无忧启动论坛

标题: [通用版下载]从其它盘直接启动硬盘任意分区的WIN7 [打印本页]

作者: victor888    时间: 2009-11-15 19:51
标题: [通用版下载]从其它盘直接启动硬盘任意分区的WIN7
感谢CHENALL,没有他就没有本方法的实现!

CHENALL 为本人定制了一个GRLDR,可以显示和存储分区的offset值,而且可以实现字符替换功能,再也不用手动一个一个的去BCD中找SIGNATURE和分区的OFFSET值了。

注意这个GRLDR是最新版的,什么功能都有,不要理会错了。
===
直接启动WIN7的想法是raycar0在我的《定制NT6.X启动/安装目录》一贴中提出来的,想法非常的好,不依赖硬盘上的启动文件,直接启动硬盘上的WIN7。当时我已经明确的指出,只要我们修改了BCD文件中的磁盘签名(disk signature)和启动分区的偏移(offset),就可以从任何盘启动WIN7。

也正是基于这样一个原理,通过使用grub4dos的ddreplace命令,实现了我们的目标。

一个已安装系统的BCD文件记录了WINDOWS所安装在的磁盘以及哪个分区上,不同电脑的BCD文件是不能通用的,如果想通用,必须解决两个问题,一是代表磁盘的磁盘签名,另外一个是所安装分区的地址偏移。

在BCD文件中,凡是指定PARTITION=X:的项,都记录了磁盘签名。本人统计了一下,一个标准的WIN7,其BCD文件中涉及的签名和OFFSET之处达11处之多,为了完全与硬盘启动WIN7的过程一样,我们需要把这些签名全部修正。

OK,我们开始动手了:

这里我们举的例子是通过grldr加载一个img,再启动里面的bootmgr。下面要建立这个img文件。
建立一个720K的iimg文件,根目录放入bootmgr,建立boot目录,里面放入一个标准的BCD文件。假设名字为openwin7.img。

下面,就是关键内容了,我们需要修改这个img中的BCD文件的磁盘签名,使其与WIN7所在的磁盘签名一致。

假设img文件位于UD中。menu菜单是这样的:
title open win7 directly
map --mem (ud)/openwin7.img (fd0)
find --set-root --ignore-cd --ignore-floppies /windows/system32/winload.exe
map () (hd30)
map --hook
write 0x60004 0
write 0x60000 0
dd if=(hd30)+1 of=(md) bs=1 count=4 skip=0x1b8 seek=0x60000
map (hd30) (hd30) && map --hook
cat --length=0 ()-1
dd if=(md) of=(md) bs=1 count=8 skip=0x8290 seek=0x60008
cat --locate=\xD0\x3F\x06\0 --replace=*0x60000 (fd0)/boot/bcd
cat --locate=\0\x7E\0\0 --replace=*0x60008 (fd0)/boot/bcd
chainloader (fd0)/bootmgr


注意:对于BIOS激活或正版系统,这样操作是没有问题的,对于软激活的系统,可就不是这个样子了,直接引导bootmgr会提示您为"盗版受害者"。

怎么办?把WIN7启动分区根目录的grldr放到img中,先修改BCD文件,再chainloader (fd0)/grldr就行了。

另外,如果不使用本方法直接启动硬盘WIN7,假设WIN7只是没有了BOOTMGR文件,CHENALL提供了简单的指令:chainloader --edx=0080 (fd0)/bootmgr。
当然,如果你的WIN7没有问题,那么你直接find --set-root再chainloader就可以了。


[ 本帖最后由 victor888 于 2009-11-20 15:44 编辑 ]

openwin7.rar

321.08 KB, 下载次数: 924, 下载积分: 无忧币 -2

grldr.rar

107.92 KB, 下载次数: 495, 下载积分: 无忧币 -2

英文版

Chinese_grldr.rar

232.36 KB, 下载次数: 773, 下载积分: 无忧币 -2

中文版(grldr, grub.exe)


作者: chenall    时间: 2009-11-15 20:53
过来踩一下,再给上两个例子。
以下NTLDR和BOOTMGR都不在硬盘上(放在U盘或你能找到的地方),硬盘上只要有启动的配置的文件BOOT.INI 或/BOOT/BCD文件就可以直接启动了。可以在硬盘上的启动文件被删除后启动,当然也可以利用一下,把硬盘上的启动文件明删除了,别人就进不去系统了。

title 1.启动硬盘上的xp/2k3系统(NTLDR)
chainloader /NTLDR
find --set-root --ignore-floppies --ignore-cd /boot.ini
dd if=()+1 of=(md)0x3E+1

title 2.启动硬盘上的VISTA/WIN7系列系统(BOOTMGR)
chainloader /BOOTMGR
find --set-root --ignore-floppies --ignore-cd /boot/bcd
dd if=()+1 of=(md)0x3e+1

[ 本帖最后由 chenall 于 2009-11-15 20:54 编辑 ]
作者: fujianabc    时间: 2009-11-15 21:25
你修改的bcd文件有多大?

bcd一般有256K或者十几KB的两种。
作者: yaojy    时间: 2009-11-15 21:27
win7爬窝如果是winload.exe出错的话,这个方法还有用吗?
如果是bootmgr等被删,或引导方式被改,宁愿修复。
因为既然win7的引导方式可以被改,那么grub4dos也有被干掉的可能,并非是grub4dos就被特别优待。
在此要控告微软,出了这么多系统让我们折腾

[ 本帖最后由 yaojy 于 2009-11-15 21:31 编辑 ]
作者: xuxuezeng    时间: 2009-11-15 21:40
原帖由 yaojy 于 2009-11-15 21:27 发表
win7爬窝如果是winload.exe出错的话,这个方法还有用吗?
如果是bootmgr等被删,或引导方式被改,宁愿修复。
因为既然win7的引导方式可以被改,那么grub4dos也有被干掉的可能,并非是grub4dos就被特别优待。
...

我认为大大们研究的目的并不只是为了修复WIN7的引导,主要目的还是在于多引导与合盘,
作者: fujianabc    时间: 2009-11-15 21:50
如果bootmgr/bcd失效了。
最简单的方法还不如先进入dos,直接往windows所在分区拷贝bootmgr和boot\bcd两个文件,其中bcd只包含启动nt 6.x一个项,device和osdevice都设成boot。然后运行grub.exe并加载windows分区根目录下的bootmgr就行了。
作者: xianglang    时间: 2009-11-15 23:01
看到那么多0X就头痛,我还是不试了,等最终研究成果……
作者: yigeren    时间: 2009-11-15 23:15
软激活的工具这么多,它们的GRLDR文件都通用的吗...
作者: maanu    时间: 2009-11-16 04:16
@ Victor888

Hello Dear,

ii just need to ask some points ,

why we need to have

dd if=(hd1)+1 of=(md) skip=0x1b8 bs=1 count=4 seek=0x60000
dd if=(md) of=(fd0)/boot/bcd skip=0x60000 bs=1 count=4 seek=0x3434

while actually , we can load win 7 all right from floppy image even if we deleted first bootmgr and boot/bcd files from hard disk . , then why using all these lines , ?

also it seems that the above example was when you boot from usb and select this image , thats why you used hd1 . so from cd , we ll use hd0 ?

and is your approach similar to the following that we have in NT5 based System , where we make img file with ntldr ,ntdetect.com , boot.ini .

and boot.ini like below ,

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

and so on ....

can we use same approach for NT6 based OS too ? where setup will search for winload.exe on every partition of every attached hdd ?

thanks ,

Regards,
Maanu from Pakistan
作者: victor888    时间: 2009-11-16 09:02
回复3楼:
我修改的是28K的BCD,256K的没有见过,但修改原理应该是一样的。

回复4楼:
WINLOAD出错不知道是什么样子,我觉得这种直接启动方式也可以直接启动WIN7,也WINLOAD无关,因为正确的WINLOAD路径在BCD中已经指明了。

回复5楼:
这个与合盘没有关系,不过是启动WIN7的一种方式而已。

回复7楼:
如果说恢复WIN7系统,最好的工具当属recenv.exe,我们没有必要进入DOS去操作,更没有必要进WIN去操作。其实如果手动恢复WIN7的话,可以在PE下把IMG中的BOOTMGR和“使用DD命令直接修改”的BCD拷贝过去就行了。

其实反过来年讲,如果我们能从其它盘启动WIN7,我们完全可以按F8进入修复模式,再运行recenv.exe就可以了,BCDBOOT不用着,因为这个工作只是修复WIN7的启动,而前者可以把硬盘所有安装的系统都一次性找出来。
作者: victor888    时间: 2009-11-16 09:15
hi, Maanu, you this lovely foreign guy.

I try to answer your question now.
why we need to have
dd if=(hd1)+1 of=(md) skip=0x1b8 bs=1 count=4 seek=0x60000
dd if=(md) of=(fd0)/boot/bcd skip=0x60000 bs=1 count=4 seek=0x3434
while actually , we can load win 7 all right from floppy image even if we deleted first bootmgr and boot/bcd files from hard disk . , then why using all these lines , ?

Different installed NT6.X systems write disk signature and partition offset in BCD files. So BCD file is usually not compitalbe to other pcs. We must change disk signature and partition offset in BCD file for starting different system.

The reason I use above dd line is that I must consider the booting speed. You can see that IMG was mapped into memory, and HD signature was written to memory at 0x60000 either.

also it seems that the above example was when you boot from usb and select this image , thats why you used hd1 . so from cd , we ll use hd0 ?

You are right. I will revise GRLDR command and make it more comatible to recognize which disk and which partition windows 7 has been installed. That is we need not to consider HD1 of HDX.

and is your approach similar to the following that we have in NT5 based System , where we make img file with ntldr ,ntdetect.com , boot.ini .
..

Explanied above, BCD is not similiar to boot.ini because of the disk signature and partition offset.

[ 本帖最后由 victor888 于 2009-11-16 09:24 编辑 ]
作者: yaojy    时间: 2009-11-16 09:27
原帖由 xuxuezeng 于 2009-11-15 21:40 发表

我认为大大们研究的目的并不只是为了修复WIN7的引导,主要目的还是在于多引导与合盘,

不知道是我理解有误,还是LZ表述不当。
帖子一开始就说当win7爬窝...,用PE修复很麻烦...,言下之意是这个东西修复更方便。
其实,把这个东西作为启动win7的一种方式来研究,那也是不错的。
比如有人喜欢这样绕圈子:先引导到DOS,再从DOS引导grub4dos,最后由grub4dos引导xp/2003/vista/win7
作者: victor888    时间: 2009-11-16 10:15
我认为楼上说的话对于本主题讨论的内容一点关系没有,如果通读全文,不会有这样的误解。我也不想和你进行任何的争论,请注意我的签名。
作者: maanu    时间: 2009-11-16 16:12
post # 11

ok i got it . i ll wait for your next grub4dos more universal approach to load the img document from memory . i mean to boot windows 7 which is on hdd .

and are  you experimenting with latest 14th november rellease of grub4dos ?

one last question , if you dont mind ,

i see that there are different memory addresses you mentioned in seek=xxxx .  are they all possible memory addresses where bcd or bootmgr files can be found on hard disk or what ?

Thank you so much for the reply .

Regards,
Maanu from Pakistan
作者: victor888    时间: 2009-11-16 18:06
标题: #14 maanu
Those address belong to  BCD file not to memory. The img file is just mapped into memory.

The BCD file is just one of standard Chinese windows 7 ultimate edition. So if someone want to revise BCD, it is strongly recommended to check disk signature addresses in BCD file by hex edit tool.

I haven't test the newest grub4dos and also don't know what  new features have been added.
作者: yaojy    时间: 2009-11-16 20:16
原帖由 victor888 于 2009-11-16 10:15 发表
我认为楼上说的话对于本主题讨论的内容一点关系没有,如果通读全文,不会有这样的误解。我也不想和你进行任何的争论,请注意我的签名。

我也认为争论下去只会增加更多的“误解”
作者: victor888    时间: 2009-11-16 20:50
标题: 回复 #16 yaojy 的帖子
我有点偏激了,我现在去请求把你的帐号恢复,SORRY。

[ 本帖最后由 victor888 于 2009-11-17 10:23 编辑 ]
作者: yaojy    时间: 2009-11-16 21:25
原帖由 victor888 于 2009-11-16 20:50 发表
我看到了垃圾!
我看到了垃圾!
我看到了垃圾!
我看到了垃圾!
我看到了垃圾!
我看到了垃圾!
========
我不怕把这个主题变成一个吵架的地方,因为我痛恨垃圾,WUYOU的回帖有一半以上是垃圾, ...

实在抱歉!让LZ满口都是垃圾了...
作者: ones    时间: 2009-11-16 22:43
楼主提供了一个因为几个启动文件导致在硬盘启动WIN7失效后通过其它方式启动win7的方法,大家知道,win7对文件的加密是牛B的,如果无法启动硬盘上的系统而且又没备份数字证书导致重要数据丢失,那可要完蛋了。我发现在某些winpe3.0的boot目录中有20K的BCD文件,某些却是256K,某些win7多版本整合盘里也是256K大小的BCD
作者: victor888    时间: 2009-11-17 03:22
deleted.

[ 本帖最后由 victor888 于 2009-11-17 10:23 编辑 ]
作者: victor888    时间: 2009-11-17 10:30
标题: #14 maanu
You are right, new GRUB4DOS provides us with rew command -replace which enable us to fulfill the repalce task by a single line. It is no longer neccessary to find all disk signatures in BCD file.

==
chenall told me it is impossible to deliver the variance.

[ 本帖最后由 victor888 于 2009-11-17 11:25 编辑 ]
作者: netwinxp    时间: 2009-11-17 11:32
我怀疑WIN7可能有点模仿MAC BOOTCAMP,很多咚咚可能和那个200M的隐藏分区/卷有莫大关系,如果把那个分区/卷的内容清空会跑出“BOOTMBR is missing”。当然这仅仅是个人猜测,并未对其内容进行具体分析,本人没有发言权。
作者: chenall    时间: 2009-11-17 12:39
原帖由 ones 于 2009-11-16 22:43 发表
楼主提供了一个因为几个启动文件导致在硬盘启动WIN7失效后通过其它方式启动win7的方法,大家知道,win7对文件的加密是牛B的,如果无法启动硬盘上的系统而且又没备份数字证书导致重要数据丢失,那可要完蛋了。我 ...


256K的挂到注册表后再导出就可以得到比较小的了。20KB左右吧。
作者: fujianabc    时间: 2009-11-17 16:37
原帖由 netwinxp 于 2009-11-17 11:32 发表
我怀疑WIN7可能有点模仿MAC BOOTCAMP,很多咚咚可能和那个200M的隐藏分区/卷有莫大关系,如果把那个分区/卷的内容清空会跑出“BOOTMBR is missing”。当然这仅仅是个人猜测,并未对其内容进行具体分析,本人没有 ...

没有什么关系,那个隐藏分区只不过是把启动文件bootmgr/bcd等全放进去了而已,相当于很多linux的boot分区。

而且严格来说,那个启动分区根本不是隐藏分区,只不过系统默认没有分配盘符。
作者: victor888    时间: 2009-11-19 19:19
最后顶起。
作者: yigeren    时间: 2009-11-20 12:13
能不能也提供GRUB.EXE文件
作者: go2    时间: 2009-11-20 12:28
版主,不知现在通用的grub 2009-11-14由不点上传的grldr可否用在你的大作上。因为如果是订制的话,实在不方便。
作者: victor888    时间: 2009-11-20 12:42
grub.exe我向chenall要了,等回音呢。

chenall给我的版本,就是基于不点最新版弄的,什么功能全有,不知道为什么要换呢?
作者: go2    时间: 2009-11-20 13:48
版主:我看过Vista与win7的bcd是一样的,不一样的是bootmgr.

用CHENALL的方法可以启动vista(有bcd,用的是Vista的bootmgr)

用你的方法启动到cat --length=0 ()-1
就显示文件名错,按任意键退出。

不知哪里出错?可否帮忙分析一下。你的方法很好
作者: alexeiboy    时间: 2009-11-20 13:49
呵呵

不错啊

.....
作者: chenall    时间: 2009-11-20 13:49
原帖由 go2 于 2009-11-20 13:48 发表
版主:我看过Vista与win7的bcd是一样的,不一样的是bootmgr.

用CHENALL的方法可以启动vista(有bcd,用的是Vista的bootmgr)

用你的方法启动到cat --length=0 ()-1
就显示文件名错,按任意键退出。

不 ...


你的GRLDR不是对应的版本(用顶楼的),
以前的版本不可以使用如下命令的。
cat --length=0 ()-1
作者: victor888    时间: 2009-11-20 14:16
30楼,我给你一个改过的机会,刚注册,第一贴就是水贴,以后不要发了。
作者: go2    时间: 2009-11-20 14:47
chenall给我的版本,就是基于不点最新版弄的,什么功能全有,不知道为什么要换呢?


c大,是说不点14号上传的版本不适用V版的启动方式吗?

那你这个版本可以用到0PE和MicroPE吗?

如果可以,可否一起放出grub.exe?
作者: victor888    时间: 2009-11-20 15:07
楼上,你需要做的是行动,这个GRLDR不过是功能增强了,其它的什么也不少,我不知道你在说什么。
作者: go2    时间: 2009-11-20 17:19
原帖由 victor888 于 2009-11-20 15:07 发表
楼上,你需要做的是行动,这个GRLDR不过是功能增强了,其它的什么也不少,我不知道你在说什么。


有在测试,因为0PE启动需要grub.exe,我想集成V版的启动img到我的启动盘中,才有此要求.

谢谢,收到,感谢你。这种启动方式很好!

[ 本帖最后由 go2 于 2009-11-20 17:23 编辑 ]
作者: go2    时间: 2009-11-20 17:57
成功用LZ的文件启动我的在(hd0,2)的Vista

[ 本帖最后由 go2 于 2009-11-21 11:12 编辑 ]
作者: chenall    时间: 2009-11-20 18:35
上传一个GRUB4DOS的修改增强版(也就是顶楼的版本),顺便测试一下VDISK的下载是否好用。
基于官方11-14的版本上修改

修改内容:
以下两项必须先设置好root后才能使用。使用语法是固定的。
计算当前分区的起始位置
cat --length=0 ()-1
计算当前分区的大小
cat --length=0 ()
另外调整了cat的功能,现在只要有--length=0就认为是获取文件大小的功能而忽略其它参数像--locate --replace之类的。

--replace添加了一个功能允许直接从内存中取数据替换(固定8个字节,使用自己小心)
使用 --replace=*内存地址.
例子,查找(fd0)/boot/bcd里面的00 7E 00 00 替换为内存0x60000开始的8个字节
cat --locate=\0\0x7e\0\0 --replace=*0x60000 (fd0)/boot/bcd

grub4dos-0.4.4-2009-11-19.rar

注意:非官方版本,最好知道自己在做什么,否则由此产生的一切后果自负

[ 本帖最后由 chenall 于 2009-11-20 18:42 编辑 ]
作者: 11118888    时间: 2009-11-20 20:56
这个是好东西啊!..........
作者: victor888    时间: 2009-11-20 21:06
楼上,你在发垃圾贴。

其实CHENALL说的话有点吓人了,一个到内存中的BCD,怎么改都没有事的。当然,你用这个命令去捉摸改硬盘的MBR,可以小心了。
作者: diwu2005    时间: 2009-11-21 07:47
楼主,我用win7有一段时间了,有两次折腾的无法启动,都只好重新安装。如果采用你的办法,我想就不需要重新安装了。如果把你的openwin7.img文件及相关文件用于工具光盘,怎样具体做才能顺利用菜单调用?希望能得到指导
作者: go2    时间: 2009-11-21 10:20
c大:

title 1.启动硬盘上的xp/2k3系统(NTLDR)
chainloader /NTLDR
find --set-root --ignore-floppies --ignore-cd /boot.ini
dd if=()+1 of=(md)0x3E+1



我将ntldr放入V版的img中

先map --mem /openwin7.img (fd0)

然后查找(fd0)内的os.menu

菜单如下:

timeout 8
default 1
title
clear
title 1.Open Vista/Win7 (Directly)
find --set-root --ignore-cd --ignore-floppies /windows/system32/winload.exe
map () (hd30)
map --hook
write 0x60004 0
write 0x60000 0
dd if=(hd30)+1 of=(md) bs=1 count=4 skip=0x1b8 seek=0x60000
map (hd30) (hd30) && map --hook
cat --length=0 ()-1
dd if=(md) of=(md) bs=1 count=8 skip=0x8290 seek=0x60008
cat --locate=\xD0\x3F\x06\0 --replace=*0x60000 (fd0)/boot/bcd
cat --locate=\0\x7E\0\0 --replace=*0x60008 (fd0)/boot/bcd
chainloader (fd0)/bootmgr
title 2.Open Vista/Win7 (crack)
find --set-root --ignore-cd --ignore-floppies /windows/system32/winload.exe
map () (hd30)
map --hook
write 0x60004 0
write 0x60000 0
dd if=(hd30)+1 of=(md) bs=1 count=4 skip=0x1b8 seek=0x60000
map (hd30) (hd30) && map --hook
cat --length=0 ()-1
dd if=(md) of=(md) bs=1 count=8 skip=0x8290 seek=0x60008
cat --locate=\xD0\x3F\x06\0 --replace=*0x60000 (fd0)/boot/bcd
cat --locate=\0\x7E\0\0 --replace=*0x60008 (fd0)/boot/bcd
chainloader (fd0)/grldr
title 3.Open XP/2003 (ntldr)
chainloader /ntldr
find --set-root --ignore-floppies --ignore-cd /boot.ini
dd if=()+1 of=(md)0x3E+1


P.S:XP在(hd0,1) Vista在(hd0,2)Vist启动ok

可是启动XP时不能进入系统,只是重启

不知是哪里错了?如何可以进入系统?

[ 本帖最后由 go2 于 2009-11-21 11:11 编辑 ]
作者: victor888    时间: 2009-11-21 10:45
原帖由 diwu2005 于 2009-11-21 07:47 发表
楼主,我用win7有一段时间了,有两次折腾的无法启动,都只好重新安装。如果采用你的办法,我想就不需要重新安装了。如果把你的openwin7.img文件及相关文件用于工具光盘,怎样具体做才能顺利用菜单调用?希望能得 ...


其实我不建议用光盘来解决问题,还是U盘方便。

不管如何启动,我们都要使用GRUB4DOS,因此,光启也要设法启动GRUB4DOS才行,启动方式有3个,一个就是把MENU.LST内置到GRLDR,再把GRLDR作成光盘启动引导记录;还有就是把IMG扩大成1.44m,里面加入DOS启动,再启动GRUB.EXE,再配置菜单,我指使用EZBOOT;如果使用ISOLINUX也可以,自己研究一下用法吧。
作者: chenall    时间: 2009-11-21 11:32
#41,直接重启?
启动后按F8看能不能出现菜单,这个功能只有我自己试过,其它的不太清楚。

如果你的XP确定在(hd0,1)上那可以试试直接使用以下命令启动
chainloader --edx=0x0180 /ntldr

也可以试试把上面的菜单的chainloader /ntldr改成
chainloader --edx=0x0080 /ntldr
作者: go2    时间: 2009-11-21 11:52
标题: 回复 #43 chenall 的帖子
chainloader --edx=0x0080 /ntldr


成功启动XP

title 2.启动硬盘上的VISTA/WIN7系列系统(BOOTMGR)
chainloader /BOOTMGR
find --set-root --ignore-floppies --ignore-cd /boot/bcd
dd if=()+1 of=(md)0x3e+1


我用的是win7的bootmgr启动Vista,启动后蓝屏。用Vista的bootmgr启动Win7没问题。

用V版的方式bootmgr可以通用。。。


谢谢!

[ 本帖最后由 go2 于 2009-11-21 13:25 编辑 ]
作者: fujianabc    时间: 2009-11-21 20:19
原帖由 go2 于 2009-11-21 11:52 发表


成功启动XP



我用的是win7的bootmgr启动Vista,启动后蓝屏。用Vista的bootmgr启动Win7没问题。

用V版的方式bootmgr可以通用。。。


谢谢!

不用这种方法,直接用win7的bootmgr是可以启动vista的
作者: go2    时间: 2009-11-25 09:36
注意:对于BIOS激活或正版系统,这样操作是没有问题的,对于软激活的系统,可就不是这个样子了,直接引导bootmgr会提示您为"盗版受害者"。

怎么办?把WIN7启动分区根目录的grldr放到img中,先修改BCD文件,再chainloader (fd0)/grldr就行了。


V版,我用这怎么不成功,由于是实机操作,无法提供照片


补充错误信息:

Error 13:Invaliad or Unsupported Executable Format

[ 本帖最后由 go2 于 2009-11-25 19:07 编辑 ]
作者: go2    时间: 2009-11-25 19:09
用C大启动动ntldr方式启动XP,多了个A盘

ntldr.JPG (91.92 KB, 下载次数: 129)

ntldr.JPG

作者: chenall    时间: 2009-11-25 19:34
#47,那是因为你有装FIRADISK驱动。否则应该是看不到了。
作者: go2    时间: 2009-11-25 19:41
C大,是的。。。

#46有否解决方案?
作者: victor888    时间: 2009-11-25 20:07
回楼上,我的回答可能不对,这个软激活的GRLDR和平常的不一样,是加入SLIC激活信息的东西。

因此,不应该把GRLDR放到IMG中,应该做一个判断,如果硬盘存在GRLDR,那么就引发它。
作者: fujianabc    时间: 2009-11-25 20:31
原帖由 go2 于 2009-11-25 19:41 发表
C大,是的。。。

#46有否解决方案?

你把firadisk驱动卸掉
作者: chenall    时间: 2009-11-25 20:33
因为激活使用的GRLDR是旧版的,不支持直接chainloader,需要加--force参数
你可以试一下
chainloader --force /grldr
作者: go2    时间: 2009-11-25 20:51
C大。果真可以!!!偶像啊!!!你解决了困扰我很久的一个问题!!!很久以前就想启动这个grldr了!!!

万分感谢!!!

[ 本帖最后由 go2 于 2009-11-25 21:10 编辑 ]

active.png (26.3 KB, 下载次数: 134)

网上的序列号,没什么秘密

网上的序列号,没什么秘密

作者: go2    时间: 2009-11-25 21:02
原帖由 victor888 于 2009-11-25 20:07 发表
回楼上,我的回答可能不对,这个软激活的GRLDR和平常的不一样,是加入SLIC激活信息的东西。

因此,不应该把GRLDR放到IMG中,应该做一个判断,如果硬盘存在GRLDR,那么就引发它。


V版,成功了,现在可以对Vista Win7启动是无所不能了。

XP的启动我总觉得不太满意,不过也可以启动了(不是A盘的问题,从装Firadisk起,就知道map --mem后会显现了,这也是这个驱动最大的特点,另外的原因。。。)

上传个可用的软破解Win7(Vista应该也可用,破解机制一样)的grldr

[ 本帖最后由 go2 于 2009-11-25 21:08 编辑 ]

grldr_cr.rar

86.84 KB, 下载次数: 109, 下载积分: 无忧币 -2


作者: victor888    时间: 2009-11-25 21:40
XP系统的启动也可以不依赖硬盘上的启动文件的。
我在U盘安装XP方法中做过阐述。

现在就说一下思路,我现在没有精力动手。

在硬盘搜索XP的特征文件,比如NTDETECT.COM
搜索到后,根据其属于哪块HD,或者其DISK SIGNATURE,以及其属于第几分区,使用DD命令更改BOOT.INI文件,再引导FD0中的NTLDR(根目录要放置NTDETECT.COM)。

当然BOOT.INI文件过小,我们可以在后面写入一堆;说明内容,使其大于3K。
作者: go2    时间: 2009-11-26 00:25
V版,我只会简单应用 ~~

放在 U盘[被认为(hd0,0)],按C大方法启动XP,一直重启。用了
map (hd0) (hd-1)
map (hd-1) (hd0)
map --hook

凑合可以使用。。。有空还请你能写个通用的。。。
作者: chenall    时间: 2009-11-26 00:55
title winxp
chainloader /NTLDR
checkrange 0x80 read 0x8280 && map (hd1) (hd0)
checkrange 0x80 read 0x8280 && map (hd0) (hd1)
checkrange 0x80 read 0x8280 && map --hook
find --set-root --ignore-floppies --ignore-cd /boot.ini
dd if=()+1 of=(md)0x3E+1
作者: go2    时间: 2009-11-26 01:11
谢谢大侠。。。

你也还没休息啊。。。
作者: victor888    时间: 2009-11-26 06:31
chenall的方法还是启动硬盘上的XP

最好的还是直接从U盘启动,改BOOT.INI文件,当然,又为GRLDR提出了难题,如何把分区参数传递到文件中。
作者: ziyun    时间: 2009-11-27 18:03
又一个精品。谢谢楼主,太谢谢了,支持
作者: lhsz    时间: 2009-11-27 20:50
这个强贴! 一定要收藏了
作者: victor888    时间: 2009-11-27 23:43
楼上,GARBAGE贴。
作者: victor888    时间: 2009-11-27 23:44
60楼也是垃圾贴,你再发一次,永久封你IP。
作者: 追风    时间: 2009-12-8 21:31
今天恢复系统了,原来C盘安装的是XP,E盘是Win7。恢复了C盘的系统,本来想用工具修复Win7启动菜单的,后来想起victor888有个研究任意分区启动Win7的帖子,就开始折腾起来了,刚开始使用Grub引导openwin7.img进入系统,发现出错,后来翻翻帖子,下载了专用的Grub,这时就可以进入Win7了,不过由于用的是软激活,启动后显示要激活,看顶楼的说明“对于软激活的系统,把WIN7启动分区根目录的grldr放到img中,先修改BCD文件,再chainloader (fd0)/grldr就行了“,感觉比较麻烦就没有尝试了。

后来,把原来备份的Win7引导文件(Boot目录和bootmgr文件)复制到G盘(隐藏扩展分区,用1JF9引导G盘上的Grub),通过引导激活使用的grldr(grldr改名win7,因为我的G盘已经有一个grldr了)可以进入系统,并显示系统已激活,菜单如下:
title 启动硬盘Win7系统
chainloader --force /win7
find --set-root --ignore-floppies --ignore-cd /boot/bcd
dd if=()+1 of=(md)0x3e+1

在这里想问一下,如果把openwin7.img和Win7文件(即破解的grldr改名)放到G盘,系统启动时按F9进入Grub,引导并进入Win7,菜单如下:
title 引导Win7系统
map --mem /openwin7.img (fd0)
find --set-root --ignore-cd --ignore-floppies /windows/system32/winload.exe
map () (hd30)
map --hook
write 0x60004 0
write 0x60000 0
dd if=(hd30)+1 of=(md) bs=1 count=4 skip=0x1b8 seek=0x60000
map (hd30) (hd30) && map --hook
cat --length=0 ()-1
dd if=(md) of=(md) bs=1 count=8 skip=0x8290 seek=0x60008
cat --locate=\xD0\x3F\x06\0 --replace=*0x60000 (fd0)/boot/bcd
cat --locate=\0\x7E\0\0 --replace=*0x60008 (fd0)/boot/bcd
chainloader --force /win7

不知能否成功启动Win7呢?因家用的电脑没有安装Win7,所以无法测试。

[ 本帖最后由 追风 于 2009-12-8 21:46 编辑 ]
作者: victor888    时间: 2009-12-8 21:49
楼上,肯于动手和动脑,我先赞扬你一下!

如果是chainloader (fd0)/win7的话,需要把win7也放入img中,肯定可以启动的,这样的话,G盘也不用放win7了。
===
楼上改的可真快,我刚发完就发现你已经改了,不行,改回来,win7需要放到IMG中的。

因为这个WIN7是要找BOOTMGR的,如果WIN7在G盘它首先找的就是同分区的BOOTMGR,BOOTMGR又会找同分区的BCD,这样就错了,一定要把WIN7放到IMG中。

[ 本帖最后由 victor888 于 2009-12-8 21:52 编辑 ]
作者: 追风    时间: 2009-12-8 21:52
谢谢victor888解答,还有chainloader (fd0)/win7不需要加--force吗?
作者: victor888    时间: 2009-12-8 21:53
这个FORCE没有用的,不用加,注意一定要把WIN7放到IMG中。
作者: 追风    时间: 2009-12-8 22:02
chenall 在#52的回答:
因为激活使用的GRLDR(我这里是Win7)是旧版的,不支持直接chainloader,需要加--force参数
你可以试一下
chainloader --force /grldr

chenall说要加,victor888说不用,我都糊涂了。

不知道有没有新的grldr文件,不需要加--force。
作者: victor888    时间: 2009-12-8 22:08
你找到根据了,应该是这样的:
chainloader --force (fd0)/win7
作者: 追风    时间: 2009-12-8 22:13
非常感谢victor888版主耐心解答,明天回公司印证一下。

2009-12-09  经测试,在img文件中加入win7文件(即破解的Grldr文件),已经能够完美启动Win7,再也会不显示未激活了。

title 引导Win7系统
map --mem /openwin7.img (fd0)
find --set-root --ignore-cd --ignore-floppies /windows/system32/winload.exe
map () (hd30)
map --hook
write 0x60004 0
write 0x60000 0
dd if=(hd30)+1 of=(md) bs=1 count=4 skip=0x1b8 seek=0x60000
map (hd30) (hd30) && map --hook
cat --length=0 ()-1
dd if=(md) of=(md) bs=1 count=8 skip=0x8290 seek=0x60008
cat --locate=\xD0\x3F\x06\0 --replace=*0x60000 (fd0)/boot/bcd
cat --locate=\0\x7E\0\0 --replace=*0x60008 (fd0)/boot/bcd
chainloader --force (fd0)/win7

[ 本帖最后由 追风 于 2009-12-9 09:10 编辑 ]
作者: sratlf    时间: 2009-12-9 09:45
原帖由 追风 于 2009-12-8 22:13 发表
非常感谢victor888版主耐心解答,明天回公司印证一下。

2009-12-09  经测试,在img文件中加入win7文件(即破解的Grldr文件),已经能够完美启动Win7,再也会不显示未激活了。

title 引导Win7系统
map -- ...


想问个问题   这次启动成功  并且激活  那下次呢  如果下次是正常启动的   还会提示激活成功吗
作者: 追风    时间: 2009-12-9 10:15
下次还是这样进啊,只会提示一次,第二次就不会提示了。
作者: sratlf    时间: 2009-12-9 12:20
标题: 回复 #72 追风 的帖子
也就是每次都得通过img启动  这样就能激活   不用img正常启动时 就不能激活是吧
作者: victor888    时间: 2009-12-9 12:41
因为我讨厌软激活,最后自己改BIOS激活了,对了,这种启动WIN7的方式和正常启动还有一个区别,就是启动时不会出现那四个闪动的火球。
作者: 追风    时间: 2009-12-9 14:47
回复 #57 chenall 的帖子
title winxp
chainloader /NTLDR
checkrange 0x80 read 0x8280 && map (hd1) (hd0)
checkrange 0x80 read 0x8280 && map (hd0) (hd1)
checkrange 0x80 read 0x8280 && map --hook
find --set-root --ignore-floppies --ignore-cd /boot.ini
dd if=()+1 of=(md)0x3E+1

我的XP安装在C盘,用1JF9引导G盘的Grub,直接用上面的菜单进行引导提示找不到文件,把C盘上的NTLDR和Boot.ini文件复制过来也不行。

后来,把菜单改为:
title winxp
chainloader /NTLDR
find --set-root --ignore-floppies --ignore-cd /boot.ini
dd if=()+1 of=(md)0x3E+1

然后复制C盘上的NTLDR和Boot.ini文件,再引导就可以进入XP了,不过有一个问题,就是用该方法进入XP(或者Win7)后,原来的G盘(EISA分区)会自动显示出来并分配盘符,那位知道原因,能否说明一下。谢谢!

[ 本帖最后由 追风 于 2009-12-9 15:16 编辑 ]
作者: ziyun    时间: 2009-12-9 14:52
谢谢楼主分享,收藏备用了!
作者: chenall    时间: 2009-12-9 16:20
#75
这个菜单是用于U盘引导的情况的。
如果你是直接从硬盘上启动就不需要这么麻烦了。。

另外,你有条件可以试一下最新版的GRLDR。使用以下方法来启动看是不是可以启动。
http://grub4dos-chenall.googleco ... .4.4-2009-12-03.rar

title winxp
map --mem /ntldr (rd)
find --set-root --ignore-floppies --ignore-cd /boot.ini
chainloader (rd)+1

关于你的EISA分区显示的问题,可能和1JF9引导有关,它引导的时候可能就自动显示盘符的。
可以直接直接使用GRUB4DOS来引导不通过1JF9。
作者: 追风    时间: 2009-12-9 16:41
谢谢chenall 解答,关于EISA分区显示的问题确实与1JF9有关,经用2009-12-03新版测试,可以成功启动XP和Win7,菜单如下:
title  WinXP
map --mem /ntldr (rd)
find --set-root --ignore-floppies --ignore-cd /boot.ini
chainloader (rd)+1

title  Win7
chainloader --force /boot/grldr
find --set-root --ignore-floppies --ignore-cd /boot/bcd
dd if=()+1 of=(md)0x3e+1

不知启动Win7有没有像启动XP一样有新的命令?
作者: chenall    时间: 2009-12-9 17:40
#78
如果不使用激活的GRLDR那就和启动XP是一样的。
title win7
map --mem /bootmgr (rd)
find --set-root --ignore-floppies --ignore-cd /boot/bcd
chainloader (rd)+1

如果要加载那个激活用的GRLDR就没有办法了。
作者: 追风    时间: 2009-12-9 18:05
#79

菜单1:
title  WinXP
map --mem /ntldr (rd)
find --set-root --ignore-floppies --ignore-cd /boot.ini
chainloader (rd)+1

经测试,只要当前分区有ntldr文件就可以启动XP了(原来必须放boot.ini文件的,现在可以自动搜索该文件,主要在其他分区有boot.ini就行了。)

菜单2
title win7
map --mem /bootmgr (rd)
find --set-root --ignore-floppies --ignore-cd /boot/bcd
chainloader (rd)+1

经测试,确实可以启动,不过还是会提示是"盗版受害者",期待有新的解决方法,否则只能用旧的方法引导了!

菜单3:
title win7
chainloader --force /boot/grldr
find --set-root --ignore-floppies --ignore-cd /boot/bcd
dd if=()+1 of=(md)0x3e+1

经测试,当前分区必须放Win7的boot目录和相关文件,否则会提示出错,即使其他分区有Win7的Boot目录也不行,但用“菜单2”却可以自动搜索到,并可以进入Win7,只不过提示要激活的信息。



[ 本帖最后由 追风 于 2009-12-10 14:32 编辑 ]
作者: charlieviva    时间: 2010-1-15 13:57
版主,我想问个延伸性的问题,如果不使用GRLDR,能否使用VISTA的BOOTMGR引导硬盘任意分区的WIN7?
我的情况是这样的:

我原来有一个硬盘,C盘上装了vista,现在朋友给了另外一个硬盘给我,C盘上装有win7。
我现在是用我自己原来的硬盘进行启动,朋友给的硬盘就变成F盘了,
我用VistaBootPRO编辑了VISTA分区上的BCD,添加了win7的启动项,但启动选择win7时提示
   WINDOWS\system32\winload.exe 这个有问题。
是不是vista的winload.exe 无法加载win7啊?是不是把win7下的winload.exe 拷贝vista所在的C盘就可以启动了呢?

作者: victor888    时间: 2010-1-15 22:28
我想你的BCD菜单改的肯定不对,你仔细检查一下路径,凡是涉及WIN7的路径,一定要指定盘符。建议抛弃VISTABOOTPRO,手动进行修改。
作者: charlieviva    时间: 2010-1-16 09:52
原帖由 victor888 于 2010-1-15 22:28 发表
我想你的BCD菜单改的肯定不对,你仔细检查一下路径,凡是涉及WIN7的路径,一定要指定盘符。建议抛弃VISTABOOTPRO,手动进行修改。

已经处理好了。谢谢楼主的解答。
原来是vista的bootmgr不支持win7的启动(好像是说没有win7 winload.exe的数字认证),我直接拷贝win7分区下的 bootmgr到vista分区下就处理好了。
作者: jneny    时间: 2010-8-5 16:00
硬盘上安装了win7的bootmgr引导。引导了xp和grub4dos

分区表是 3个主分区+1个逻辑分区  第二主分为激活。 bootmgr和ntldr这些引导文件都在活动分区上。

我下载了LZ的openwin7.img,红字是修改部分

title Bootmgr to NTLDR
map --mem /openwin7.img (fd0)
find --set-root --ignore-cd --ignore-floppies /windows/explorer.exe
map () (hd30)
map --hook
write 0x60004 0
write 0x60000 0
dd if=(hd30)+1 of=(md) bs=1 count=4 skip=0x1b8 seek=0x60000
map (hd30) (hd30) && map --hook
cat --length=0 ()-1
dd if=(md) of=(md) bs=1 count=8 skip=0x8290 seek=0x60008
cat --locate=\xD0\x3F\x06\0 --replace=*0x60000 (fd0)/boot/bcd
cat --locate=\0\x7E\0\0 --replace=*0x60008 (fd0)/boot/bcd
chainloader --force (fd0)/bootmgr

然后在openwin7.img里的bcd里添加了一项引导WINXP
bcdedit  /store bcd /create {ntldr} /d "winxp"
bcdedit /store bcd /set {ntldr} device boot  ;或者改成 device partition=c:
bcdedit /store bcd /set {ntldr} path \ntldr

结果还是不行。


楼主的这个方法是做万能的引导吗。?
BCD的引导成功关键2点确实是 正确的offset+磁盘签名
还是没搞明白你是怎么传送这两个值到BCD文件呢?

哪位能把menu.lst里的各命做个注解吗?
作者: zbgan    时间: 2010-8-9 17:52

用openwin7.img能不能启动win7PE

用openwin7.img能不能启动硬盘或U盘上的win7PE,如能,则如何修改,grub4dos菜单如何编写。
另外,我在无忧论坛下载了一款Win7PE,用UltraISO写入U盘,无论是HDD还是ZIP格式,能启动,但都不能加载外置程序,也都找不到U盘,盼指点。
作者: yjq635    时间: 2011-2-26 12:16
请问启动裸机上的vhd文件该怎么写?
xd0/x3F/x06/0  这个真的是搞不懂
作者: gamelife    时间: 2012-11-3 18:36
快速收藏~~~~~~~~~~~~~




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