computer 版 (精华区)
发信人: yahooboy (复活鸟), 信区: POPsoft
标 题: 让win2k合一可以启动的思路、方法及失败?snowpard
发信站: 听涛站 (Mon Oct 16 00:12:04 2000), 转信
目标:希望通过修改win2k 3in1的ISO,使得刻出的盘可以自启动,并且启动
的时候可以显示类似NT OS Loader那样的菜单,然后选择安装不同的版本。
所需知识:
相关工具软件的使用,汇编语言,可启动光盘的原理
所需工具:
文本编辑器,用于编辑汇编程序
调试工具,基本上debug即可
反汇编工具,我用的是win32dasm,主要用于反汇编可启动win2k的引导头,即
以前大家刻可引导win2k时用的那个boot.bin
光盘分析程序,我用的是CDR Diagnostic,用于分析光盘的内容
16进制文件编辑程序,用于修改ISO文件,我用的是Win HEX
参考资料:
可启动光盘的格式,参见我上载到ftp.lib.pku.edu.cn/incoming/ISO_from_noid
的文档cdrom7.pdf,下文假设你已经读懂了该文档
另外还可参考[光碟烧录资讯站]http://zjun.027.net/cdr/,可能是台湾的
思路:
根据可启动光盘的原理,把修改后的引导头添加的光盘上
注意:光盘的逻辑单位(我们暂且也叫它“扇区”)大小为根据mode而定一般2048个字节
方法:
1. 在ISO中找一段空地方,这个很简单,0~15扇区都是空的。
2. 分析win2k可引导光盘的引导头,需要化大功夫,做如下改动:
a. 由于它缺省是从\i386下读setup loader--setupldr.bin,
所以要增加代码,使得它可以从层层子目录去读,注意这
时是直接读光盘,没有文件系统可用。这个比较繁,需要
耐心和恒心。
b. 在合适的地方加跳转,跳到自己的菜单程序,这个地方最
好在引导头完成各种出错检查后再做。需要注意的是,尽
管引导头后面有很多空的地方可以加程序,但是要注意在
自己的程序和引导头之间要有足够的距离,因为引导头要
在这里放一些数据,当自己的菜单程序获得用户的选择后
要修改引导头中的一些数据和指令,使得它可以找到相应
的目录,然后跳转回引导头
c. 因为菜单程序要放到引导头的后面,所以在编写菜单程序
时在程序开始就做一个跳转,在跳转,在跳转的后面加足
够的空数据,编译连接好的文件用winhex直接拷贝数据后
面的代码,到引导头,这样做的好处是所有的绝对地址都
不用变。
失败原因:
菜单程序已经可以显示出来了,但是由于最终执行引导的是setupldr,它无法知道
从哪个目录读文件,所以失败。当然如果有高人愿意改它或许会成功,但是要注意
3in1上可能只有一个该文件的拷贝,这样就需要引导头向它传递参数,而且鬼知道
后面还有没有目录问题。
其它:
当然,如果仅仅让3 IN 1可以启动,那么加一个98的引导即可,甚至还可以作一个
引导后的autoexec中的菜单(和上文说的菜单性质不一样),选择执行不同目录
下的winnt.exe,但是这对我来说没有意义,或者说I don;t like it. :(
以上是我的一些心得,如果有什么不明白的请不要给我写信,我很忙又很懒,不会回
的,大家可以在版面上讨论。另外,上面提到的软件到处都有,不要找我要。
--
--
※ 来源:.听涛站 cces.net.[FROM: 匿名天使的家]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.479毫秒