首页 > 帮助中心 > PE下的SETUPLDR.BIN文件有什么作用

PE下的SETUPLDR.BIN文件有什么作用

时间:2011-09-15 | 作者:老毛桃

 

一般来说,PE光盘必须的文件列表如下
 

WINNT.SIF
I386\WINPE.IM_
I386\SETUPLDR.BIN
I386\NTDETECT.COM


  而WINNT.SIF文件内容例子如下:

  1. [SetupData]
  2. BootDevice="ramdisk(0)"
  3. BootPath="\I386\SYSTEM32\"
  4. OsLoadOptions="/minint /fastdetect /rdpath=I386\WINPE.IMG"

  SETUPLDR.BIN是启动文件,WINNT.SIF指定启动参数信息比如WINPE.IMG文件位置等。SETUPLDR.BIN加载时会根据WINNT.SIF里面的内容来启动,WINNT.SIF文件必须放在根目录下。

启动文件加载过程大致如下:
 

SETUPLDR.BIN -> NTDETECT.COM -> WINNT.SIF -> 根据OsLoadOptions 加载WINPE.IMG-->读取WINPE.IMG里面I386\TXTSETUP.SIF.....


  现在的PE一般都把WINNT.SIF改名为WINNT.XPE,还有I386目录也改成WXPE。SETUPLDR.BIN名字改的就更多了,一般可以根据文件大小看得出来。
  其实,WINNT.SIF位置,还有I386目录都是通过SETUPLDR.BIN来指定的,SETUPLDR.BIN可以任意位置任意文件名。比如BOOT\MTLDR.BIN。修改WINNT.SIF和I386名字的方法网上有许多介绍,只需要直接查找替换就行了(用十六进制编辑器打开SETUPLDR.BIN查找替换,长度要一样)。如果要改的比以前短,就在替换的字符后面再加十六进制0就可以了。

这里介绍另一种比较特殊的修改方法,直接定位修改:
  首先了解一下SETUPLDR.BIN的一些结构,已知:
 

0X2A432 处的winnt.sif就是启动后读取的文件名
0x2A43E 处的OsLoadOptions对应了winnt.sif里面的OsloadOptions




  WINNT.SIF可以随意改成其它字符(据我所知在以前还没有人改超过原来的字符数9),这里介绍改超过9个字符的方法如下图有11个字符了。0x2a43d位置的00不能改,修改后对应的文件是BOOT\PE.SIF。


  还需要更长的路径可以吗?当然,接着往下看。看下图WINNT.SIF文件的位置被改成了CSPE/KERNEL/OsLoadOptions,这样子不需要修改其它东西了。只需把WINNT.SIF放在CSPE/KERNEL目录中里面改名为OsLoadOptions就可以了。


  聪明的人可能已经发现了,没错,借用了OsLoadOptions这个字符串。上面由于没有改到这个字符串的内容,所以还是可以启动的,接着看下图。改到了OsLoadOptions字符串了。


  这时如果使用CSPE/KERNEL/WINNT.SIF来启动会失败的,因为字符串变了,解决方法也很简单,只要把WINNT.SIF里面的OsLoadOptions改成修改后的WINNT.SIF就可以了,WINNT.SIF内容修改后如

  1. [SetupData]
  2. BootDevice="ramdisk(0)"
  3. BootPath="\I386\SYSTEM32\"
  4. WINNT.SIF="/minint /fastdetect /rdpath=I386\WINPE.IMG"

  注意:上面的WINNT.SIF后面有一个00就截断字符,后面的字符就不要了,这个路径最长可以28个字符,也就是写到0x2A44C位置例子如下图:


  上图WINNT.SIF位置是BOOT\CSPE1\KERNEL\WINNT.SIF,OsLoadOptions从0X2A43E开始到00结束,所以WINNT.SIF内容要相应的改成如下。

  1. [SetupData]
  2. BootDevice="ramdisk(0)"
  3. BootPath="\I386\SYSTEM32\"
  4. ERNEL\WINNT.SIF="/minint /fastdetect /rdpath=I386\WINPE.IMG"

  有没有看懂了?还有像其它地方基本上也是一样的,希望对您有用!!!!!