|
|
发表于 2011-4-15 16:13:56
|
显示全部楼层
回复 #760 pseudo 的帖子
你可以自己尝试一下,根据前面的资料我们可以知道。
GRUB.EXE和GRLDR后面的内容都是一样的都是pre_stage2
GRLDR在偏移0X2000开始的内容就是pre_stage2
GRUB.EXE在先读一下0x1F0处的值再*512的偏移地址就是pre_stage2
所以只要需要截取GRUB.EXE前面的文件头内容再加上GRLDR从偏移0X2000开始处的内容就可以得到GRUB.EXE了
使用一个批处理就可以完成上面的操作。
流程如下。
1.先获取grub文件头的大小,并设为一个变量(使用扇区来表示,直接读0x1f0处的值一个字节就是了)
2.再获取grldr文件的大小,再设一个变量(使用扇区来表示).
3.计算需求空间
grub文件头的大小+grldr文件大小得到需要的扇区数量
4.map (md)+上面得到的扇区数量 (rd)
dd if=()/grub_start of=(rd)+1
dd if=()/grldr of=(rd)+1 skip=0x10 seek=grub.exe文件头大小(扇区)
如果没有什么问题的话最后的(rd)+1就是grub.exe了 |
|