|  | 
| 其实还可以把要做GHO的内容打包成CAB、RAR、7Z等格式(同样可以排除虚拟内存和睡眠文件),要用的时候再解压,当然如果第一分区不是启动分区(比如硬盘有坏块),还需要修改BOOT.INI和或BCD。其实GHOST有时会出现部分BPB有错,比如1键GHOST 4个分区就有BUG,个人不太推荐不同容量GHOST。 
 下面附上个人初步反汇编的WIN7 PBR(没校正,错误肯定不少),方便有心之人了解。
 ***BPB根据不同的硬盘,内容会不一样***
 
 1、FAT12、16 WIN7 PBR
 复制代码0000:7C00 EB3C       jmp 7C3E
0000:7C02 90         nop
;==================
                     label BPB
0000:7C03 OemStr     db 'MSWIN4.1';OEM字串
0000:7C0B BytePerSec dw 0200;每扇区字节数
0000:7C0D SecPerClu  db 08;每簇扇区数
0000:7C0E ResvdSec   dw 0001;保留扇区数
0000:7C10 NumOfFat   db 02;FAT表数
0000:7C11 RootEnt    dw 0200;根目录项数
0000:7C13 TolSec     dw 5103;总扇区数 如果为0则看总扇区数扩展
0000:7C15 Media      db F8;介质字节F8为硬盘 软盘为F0
0000:7C16 SecPerFat  dw 0008;每FAT表扇区数
0000:7C18 SecPerCly  dw 0011;每磁道/柱面扇区数
0000:7C1A NumOfHead  dw 0004;磁头数
0000:7C1C HidenSec   dd 00000001;分区前隐藏扇区数
0000:7C20 TolSecExt  dd 00000000;总扇区数扩展 总扇区数不为0时该双字为0
0000:7C24 DrvNum     db 80;驱动器号 硬盘80软盘00
0000:7C25 Resvd      db 00;保留 未使用
0000:7C26 ExtSig     db 29;扩展引导标志
0000:7C27 Serial     dd 00000000;分区盘系列号
0000:7C2B Vol        db 'NO NAME    ';卷标
0000:7C36 FileSys    db 'FAT12   ';文件系统类型 可以是FAT12、FAT、FAT16
;==以上是BPB====
0000:7C3E 33C9       xor cx,cx
0000:7C40 8ED1       mov ss,cx;ss=0
0000:7C42 BCF07B     mov sp,7BF0
0000:7C45 8ED9       mov ds,cx;ds=0
0000:7C47 B80020     mov ax,2000
0000:7C4A 8EC0       mov es,ax;es=2000
0000:7C4C FC         cld
0000:7C4D BD007C     mov bp,7C00
0000:7C50 384E24     cmp [bp+24],cl;DrvNum
0000:7C53 7D24       jge 7C79
0000:7C55 8BC1       mov ax,cx
0000:7C57 99         cwd
0000:7C58 E83C01     call 7D97
0000:7C5B 721C       jb 7C79
0000:7C5D 83EB3A     sub bx,003a
0000:7C60 66A11C7C   mov eax,dword ptr [7C1C];HidenSec
0000:7C64 26663B07   cmp eax,es:[bx]
0000:7C68 268A57FC   mov dl,es:[bx-04]
0000:7C6C 7506       jne 7C74
0000:7C6E 80CA02     or dl,02
0000:7C71 885602     mov [bp+02],dl
0000:7C74 80C310     add bl,10
0000:7C77 73EB       jnb 7C64
0000:7C79 33C9       xor cx,cx
0000:7C7B 8A4610     mov al,[bp+10];NumOfFat
0000:7C7E 98         cbw
0000:7C7F F76616     mul word ptr [bp+16];SecPerFat
0000:7C82 03461C     add ax,[bp+1C];HidenSec
0000:7C85 13561E     adc dx,[bp+1E]
0000:7C88 03460E     add ax,[bp+0E];ResvdSec
0000:7C8B 13D1       adc dx,cx
0000:7C8D 8B7611     mov si,[bp+11];RootEnt
0000:7C90 60         pusha
0000:7C91 8946FC     mov [bp-04],ax
0000:7C94 8956FE     mov [bp-02],dx
0000:7C97 B82000     mov ax,0020
0000:7C9A F7E6       mul si
0000:7C9C 8B5E0B     mov bx,[bp+0B];BytePerSec
0000:7C9F 03C3       add ax,bx
0000:7CA1 48         dec ax
0000:7CA2 F7F3       div bx
0000:7CA4 0146FC     add [bp-04],ax
0000:7CA7 114EFE     adc [bp-02],cx
0000:7CAA 61         popa
0000:7CAB BF0000     mov di,0000
0000:7CAE E8E600     call 7D97
0000:7CB1 7239       jb 7CEC
0000:7CB3 26382D     cmp es:[di],ch
0000:7CB6 7417       je 7CCF
0000:7CB8 60         pusha
0000:7CB9 B10B       mov cl,0B
0000:7CBB BEA17D     mov si,7DA1
0000:7CBE F3         repz
0000:7CBF A6         cmpsb
0000:7CC0 61         popa
0000:7CC1 7432       je 7CF5
0000:7CC3 4E         dec si
0000:7CC4 7409       je 7CCF
0000:7CC6 83C720     add di,0020
0000:7CC9 3BFB       cmp di,bx
0000:7CCB 72E6       jb 7CB3
0000:7CCD EBDC       jmp 7CAB
0000:7CCF A0FB7D     mov al,[7DFB]
0000:7CD2 B47D       mov ah,7D
0000:7CD4 8BF0       mov si,ax
0000:7CD6 AC         lodsb
0000:7CD7 98         cbw
0000:7CD8 40         inc ax
0000:7CD9 740C       je 7CE7
0000:7CDB 48         dec ax
0000:7CDC 7413       je 7CF1
0000:7CDE B40E       mov ah,0E
0000:7CE0 BB0700     mov bx,0007
0000:7CE3 CD10       int 10
0000:7CE5 EBEF       jmp 7CD6
0000:7CE7 A0FD7D     mov al,[7DFD]
0000:7CEA EBE6       jmp 7CD2
0000:7CEC A0FC7D     mov al,[7DFC]
0000:7CEF EBE1       jmp 7CD2
0000:7CF1 CD16       int 16
0000:7CF3 CD19       int 19
0000:7CF5 268B551A   mov dx,es:[di+1A]
0000:7CF9 52         push dx
0000:7CFA B001       mov al,01
0000:7CFC BB0000     mov bx,0000
0000:7CFF E83B00     call 7D3D
0000:7D02 72E8       jb 7CEC
0000:7D04 5B         pop bx
0000:7D05 8A5624     mov dl,[bp+24];DrvNum
0000:7D08 BE0B7C     mov si,7C0B
0000:7D0B 8BFC       mov di,sp
0000:7D0D C746F03D7D mov word ptr [bp-10],7D3D
0000:7D12 C746F4297D mov word ptr [bp-0C],7D29
0000:7D17 8CD9       mov cx,ds
0000:7D19 894EF2     mov [bp-0E],cx
0000:7D1C 894EF6     mov [bp-0A],cx
0000:7D1F C606967DCB mov byte ptr [7D96],CB
0000:7D24 EA03000020 jmp 2000:0003
0000:7D29 0FB6C8     movzx cx,al
0000:7D2C 668B46F8   mov eax,[bp-08]
0000:7D30 6603461C   add eax,[bp+1C];HidenSec
0000:7D34 668BD0     mov edx,eax
0000:7D37 66C1EA10   shr edx,10
0000:7D3B EB5E       jmp 7D9B
0000:7D3D 0FB6C8     movzx cx,al
0000:7D40 4A         dec dx
0000:7D41 4A         dec dx
0000:7D42 8A460D     mov al,[bp+0D];SecPerClu
0000:7D45 32E4       xor ah,ah
0000:7D47 F7E2       mul dx
0000:7D49 0346FC     add ax,[bp-04]
0000:7D4C 1356FE     adc dx,[bp-02]
0000:7D4F EB4A       jmp 7D9B
0000:7D51 52         push dx
0000:7D52 50         push ax
0000:7D53 06         push es
0000:7D54 53         push bx
0000:7D55 6A01       push 0001
0000:7D57 6A10       push 0010
0000:7D59 91         xchg ax,cx
0000:7D5A 8B4618     mov ax,[bp+18];SecPerCly
0000:7D5D 96         xchg ax,si
0000:7D5E 92         xchg ax,dx
0000:7D5F 33D2       xor dx,dx
0000:7D61 F7F6       div si
0000:7D63 91         xchg ax,cx
0000:7D64 F7F6       div si
0000:7D66 42         inc dx
0000:7D67 87CA       xchg dx,cx
0000:7D69 F7761A     div word ptr [bp+1A];NumOfHead
0000:7D6C 8AF2       mov dh,dl
0000:7D6E 8AE8       mov ch,al 
0000:7D70 C0CC02     ror ah,02
0000:7D73 0ACC       or cl,ah
0000:7D75 B80102     mov ax,0201
0000:7D78 807E020E   cmp byte ptr [bp+02],0E
0000:7D7C 7504       jne 7D82
0000:7D7E B442       mov ah,42
0000:7D80 8BF4       mov si,sp
0000:7D82 8A5624     mov dl,[bp+24];DrvNum
0000:7D85 CD13       int 13
0000:7D87 61         popa
0000:7D88 61         popa
0000:7D89 720B       jb 7D96
0000:7D8B 40         inc ax
0000:7D8C 7501       jne 7D8F
0000:7D8E 42         inc dx
0000:7D8F 035E0B     add bx,[bp+0B];BytePerSec
0000:7D92 49         dec cx
0000:7D93 7506       jne 7D9B
0000:7D95 F8         clc
0000:7D96 C3         ret
0000:7D97 41         inc cx
0000:7D98 BB0000     mov bx,0000
0000:7D9B 60         pusha
0000:7D9C 666A00     push 00000000
0000:7D9F EBB0       jmp 7D51
0000:7DA1            db 'BOOTMGR    ',0D,0A
0000:7DAE            db 'BOOTMGR is missing'
0000:7DC0            db FF
0000:7DC1            db 0d,0a,'Disk error'
0000:7DCD            db FF
0000:7DCE            db 0D,0A,'Press any key to restart',0D,0A,00
0000:7DEB            db 00,00,00,00,00
0000:7DF0            db 00,00,00,00,00,00,00,00,00,00,00
0000:7DFB            db AC
0000:7DFC            db C1
0000:7DFD            db CE
0000:7DFE            dw AA55;引导有效标志
2、FAT32 WIN7 PBR(修正一下,FAT32 PBR目前共占3个扇区,前面提供的反汇编代码不完整)
 
 复制代码00000:7C00 EB58                   jmp 7C5A
0000:7C02 90                     nop
==========================
                                 label BPB
0000:7C03 OemStr                 db 'MSWIN4.1';OEM字串
0000:7C0B BytePerSec             dw 0200;每扇区字节数
0000:7C0D SecPerClu              db 02;每簇扇区数
0000:7C0E ResvdSec               dw 0008;保留扇区数
0000:7C10 NumOfFat               db 01;FAT表数
0000:7C11 RootEnt                dw 0400;根目录项数
0000:7C13 TolSec                 dw 0000;总扇区数(<16M)
0000:7C15 Media                  db F8;介质字节
0000:7C16 SecPerFat              dw 0000;每FAT表扇区数(<16M)
0000:7C18 SecPerCly              dw 0011;每磁道/柱面扇区数
0000:7C1A NumOfHead              dw 0004;磁头数
0000:7C1C HidenSec               dd 00000001;分区前隐藏扇区数
0000:7C20 TolSecExt              dd 00200000;总扇区数扩展(>16M)
                                 label ExtBPB
0000:7C24 SecPerFat2             dd 00001FE0(>16M)
0000:7C28 ExtFlags               dw 0000;bit0~3:起始FAT数 bit7:0操作映射到所有FAT 1操作仅对当前FAT 其他位:保留
0000:7C2A Version                dw 0000;文件系统版本,如非0则不支持以前版本的windows
0000:7C2C RootDir1Clu            dd 00000000;根目录首簇号
0000:7C30 FSinfoSec              dw 0001
0000:7C32 BakBootSec             dw 0006;备份的引导扇区(不更新)
0000:7C34 Resvd                  db 0x0C dup(00);保留
0000:7C40 DrvNum                 db 80
0000:7C41 Unused                 db 00
0000:7C42 ExtSig                 db 29;扩展引导标志
0000:7C43 Serial                 dd 00000000;分区盘系列号
0000:7C47 Vol                    db 'NO NAME    ';卷标
0000:7C52 FileSys                db 'FAT32   ';文件系统类型
======以上为BPB===========
0000:7C5A 33C9                   xor cx,cx
0000:7C5C 8ED1                   mov ss,cx
0000:7C5E BCF47B                 mov sp,7BF4
0000:7C61 8EC1                   mov es,cx
0000:7C63 8ED9                   mov ds,cx
0000:7C65 BD007C                 mov bp,7C00
0000:7C68 884E02                 mov [bp+02],cl
0000:7C6B 8A5640                 mov dl,[bp+40]
0000:7C6E B441                   mov ah,41
0000:7C70 BBAA55                 mov bx,55AA
0000:7C73 CD13                   int 13
0000:7C75 7210                   jb 7C87
0000:7C77 81FB55AA               cmp bx,AA55
0000:7C7B 750A                   jne 7C87
0000:7C7D F6C101                 test cl,01
0000:7C80 7405                   je 7C87
0000:7C82 FE4602                 inc byte ptr [bp+02]
0000:7C85 EB2D                   jmp 7CB4
0000:7C87 8A5640                 mov dl,[bp+40]
0000:7C8A B408                   mov ah,08
0000:7C8C CD13                   int 13
0000:7C8E 7305                   jnb 7C95
0000:7C90 B9FFFF                 mov cx,FFFF
0000:7C93 8AF1                   mov dh,cl
0000:7C95 660FB6C6               movzx eax,dh
0000:7C99 40                     inc ax
0000:7C9A 660FB6D1               movzx edx,cl
0000:7C9E 80E23F                 and dl,3F
0000:7CA1 F7E2                   mul dx
0000:7CA3 86CD                   xchg ch,cl
0000:7CA5 C0ED06                 shr ch,06
0000:7CA8 41                     inc cx
0000:7CA9 660FB7C9               movzx ecx,word ptr cx
0000:7CAD 66F7E1                 mul ecx
0000:7CB0 668946F8               mov [bp-08],eax
0000:7CB4 837E1600               cmp word ptr [bp+16],0000
0000:7CB8 7538                   jne 7CF2
0000:7CBA 837E2A00               cmp word ptr [bp+2A],0000
0000:7CBE 7732                   ja 7CF2
0000:7CC0 668B461C               mov eax,[bp+1C]
0000:7CC4 6683C00C               add eax,0000000C
0000:7CC8 BB0080                 mov bx,8000
0000:7CCB B90100                 mov cx,0001
0000:7CCE E82B00                 call 7CFC
0000:7CD1 E92C03                 jmp 8000
0000:7CD4 A0FA7D                 mov al,[7DFA]
0000:7CD7 B47D                   mov ah,7D
0000:7CD9 8BF0                   mov si,ax
0000:7CDB AC                     lodsb
0000:7CDC 84C0                   test al,al
0000:7CDE 7417                   je 7CF7
0000:7CE0 3CFF                   cmp al,FF
0000:7CE2 7409                   je 7CED
0000:7CE4 B40E                   mov ah,0E
0000:7CE6 BB0700                 mov bx,0007
0000:7CE9 CD10                   int 10
0000:7CEB EBEE                   jmp 7CDB
0000:7CED A0FB7D                 mov al,[7DFB]
0000:7CF0 EBE5                   jmp 7CD7
0000:7CF2 A0F97D                 mov al,[7DF9]
0000:7CF5 EBE0                   jmp 7CD7
0000:7CF7 98                     cbw
0000:7CF8 CD16                   int 16
0000:7CFA CD19                   int 19
0000:7CFC 6660                   pushad
0000:7CFE 807E0200               cmp byte ptr [bp+02],00
0000:7D02 0F842000               je 7D26
0000:7D06 666A00                 push 00000000
0000:7D09 6650                   push eax
0000:7D0B 06                     push es
0000:7D0C 53                     push bx
0000:7D0D 666810000100           push 00010010
0000:7D13 B442                   mov ah,42
0000:7D15 8A5640                 mov dl,[bp+40]
0000:7D18 8BF4                   mov si,sp
0000:7D1A CD13                   int 13
0000:7D1C 6658                   pop eax
0000:7D1E 6658                   pop eax
0000:7D20 6658                   pop eax
0000:7D22 6658                   pop eax
0000:7D24 EB33                   jmp 7D59
0000:7D26 663B46F8               cmp eax,[bp-08]
0000:7D2A 7203                   jb 7D2F
0000:7D2C F9                     stc
0000:7D2D EB2A                   jmp 7D59
0000:7D2F 6633D2                 xor edx,edx
0000:7D32 660FB74E18             movzx ecx,word ptr [bp+18]
0000:7D37 66F7F1                 div ecx
0000:7D3A FEC2                   inc dl
0000:7D3C 8ACA                   mov cl,dl
0000:7D3E 668BD0                 mov edx,eax
0000:7D41 66C1EA10               shr edx,10
0000:7D45 F7761A                 div word ptr [bp+1A]
0000:7D48 86D6                   xchg dh,dl
0000:7D4A 8A5640                 mov dl,[bp+40]
0000:7D4D 8AE8                   mov ch,al 
0000:7D4F C0E406                 shl ah,06
0000:7D52 0ACC                   or cl,ah
0000:7D54 B80102                 mov ax,0201
0000:7D57 CD13                   int 13
0000:7D59 6661                   popad
0000:7D5B 0F8275FF               jb 7CD4
0000:7D5F 81C30002               add bx,0200
0000:7D63 6640                   inc eax
0000:7D65 49                     dec cx
0000:7D66 7594                   jne 7CFC
0000:7D68 C3                     ret
0000:7D69                        db 'BOOTMGR    '
0000:7D74                        db BYTE 0x38 DUP(00)
0000:7DAC                        db 0D,0A
0000:7DAF                        db 'BOOTMGR is missing'
0000:7DC0                        db  FF,0D,0A
0000:7DC3                        db 'Disk error'
0000:7DCD                        db FF,0D,0A
0000:7DD0                        db 'Press any key to restart'
0000:7DE8                        db 0D,0A
0000:7DEA                        db 0x0F DUP(00)
0000:7DF9                        db AC
0000:7DFA                        db C1
0000:7DFB                        db CE
0000:7DFC                        db 00,00
0000:7DFE                        dw AA55;引导有效标志
0000:7E00                        db 'RRaA'
0000:7E04                        db 0x1E0 dup(00)
0000:7FE4                        db 'rrAa'
0000:7FE8                        dd xxxx;未分配的簇数
0000:7FEC                        dd xxxx;第一个空闲簇簇号
0000:7FF0                        db 0x0E dup(00)
0000:7FFE                        dw AA55;引导有效标志
0000:8000 660FB64610             movzx eax,[bp+10]
0000:8005 668B4E24               mov ecx,[bp+24]
0000:8009 66F7E1                 mul ecx
0000:800C 6603461C               add eax,[bp+1C]
0000:8010 660FB7560E             movzx edx,word ptr [bp+0E]
0000:8015 6603C2                 add eax,edx
0000:8018 668946FC               mov [bp-04],eax
0000:801C 66C746F4FFFFFFFF       mov dword ptr [bp-0C],FFFFFFFF
0000:8024 668B462C               mov eax,[bp+2C]
0000:8028 6683F802               cmp eax,00000002
0000:802C 0F82C2FC               jb 7CF2
0000:8030 663DF8FFFF0F           cmp eax,0FFFFFF8
0000:8036 0F83B8FC               jnb 7CF2
0000:803A 6650                   push eax
0000:803C 6683E802               sub eax,00000002
0000:8040 660FB65E0D             movzx ebx,[bp+0D]
0000:8045 8BF3                   mov si,bx
0000:8047 66F7E3                 mul ebx
0000:804A 660346FC               add eax,[bp-04]
0000:804E BB0082                 mov bx,8200
0000:8051 8BFB                   mov di,bx
0000:8053 B90100                 mov cx,0001
0000:8056 E8A3FC                 call 7CFC
0000:8059 382D                   cmp [di],ch
0000:805B 741E                   je 807B
0000:805D B10B                   mov cl,0B
0000:805F 56                     push si
0000:8060 BE697D                 mov si,7D69
0000:8063 F3                     repz
0000:8064 A6                     cmpsb
0000:8065 5E                     pop si
0000:8066 741B                   je 8083
0000:8068 03F9                   add di,cx
0000:806A 83C715                 add di,0015
0000:806D 3BFB                   cmp di,bx
0000:806F 72E8                   jb 8059
0000:8071 4E                     dec si
0000:8072 75DA                   jne 804E
0000:8074 6658                   pop eax
0000:8076 E86500                 call 80DE
0000:8079 72BF                   jb 803A
0000:807B 83C404                 add sp,0004
0000:807E E971FC                 jmp 7CF2
0000:8081                        dw 2000
0000:8083 83C404                 add sp,0004
0000:8086 8B7509                 mov si,[di+09]
0000:8089 8B7D0F                 mov di,[di+0F]
0000:808C 8BC6                   mov ax,si
0000:808E 66C1E010               shl eax,10
0000:8092 8BC7                   mov ax,di
0000:8094 6683F802               cmp eax,00000002
0000:8098 0F8256FC               jb 7CF2
0000:809C 663DF8FFFF0F           cmp eax,0FFFFFF8
0000:80A2 0F834CFC               jnb 7CF2
0000:80A6 6650                   push eax
0000:80A8 6683E802               sub eax,00000002
0000:80AC 660FB64E0D             movzx ecx,[bp+0D]
0000:80B1 66F7E1                 mul ecx
0000:80B4 660346FC               add eax,[bp-04]
0000:80B8 BB0000                 mov bx,0000
0000:80BB 06                     push es
0000:80BC 8E068180               mov es,[8081]
0000:80C0 E839FC                 call 7CFC
0000:80C3 07                     pop es
0000:80C4 6658                   pop eax
0000:80C6 C1EB04                 shr bx,04
0000:80C9 011E8180               add [8081],bx
0000:80CD E80E00                 call 80DE
0000:80D0 0F830200               jnb 80D6
0000:80D4 72D0                   jb 80A6
0000:80D6 8A5640                 mov dl,[bp+40]
0000:80D9 EA00000020             jmp 2000:0000
0000:80DE 66C1E002               shl eax,02
0000:80E2 E81100                 call 80F6
0000:80E5 26668B01               mov eax,es:[bx+di]
0000:80E9 6625FFFFFF0F           and eax,0FFFFFFF
0000:80EF 663DF8FFFF0F           cmp eax,0FFFFFF8
0000:80F5 C3                     ret
0000:80F6 BF007E                 mov di,7E00
0000:80F9 660FB74E0B             movzx ecx,word ptr [bp+0B]
0000:80FE 6633D2                 xor edx,edx
0000:8101 66F7F1                 div ecx
0000:8104 663B46F4               cmp eax,[bp-0C]
0000:8108 743A                   je 8144
0000:810A 668946F4               mov [bp-0C],eax
0000:810E 6603461C               add eax,[bp+1C]
0000:8112 660FB74E0E             movzx ecx,word ptr [bp+0E]
0000:8117 6603C1                 add eax,ecx
0000:811A 660FB75E28             movzx ebx,word ptr [bp+28]
0000:811F 83E30F                 and bx,000F
0000:8122 7416                   je 813A
0000:8124 3A5E10                 cmp bl,[bp+10]
0000:8127 0F83C7FB               jnb 7CF2
0000:812B 52                     push dx
0000:812C 668BC8                 mov ecx,eax
0000:812F 668B4624               mov eax,[bp+24]
0000:8133 66F7E3                 mul ebx
0000:8136 6603C1                 add eax,ecx
0000:8139 5A                     pop dx
0000:813A 52                     push dx
0000:813B 8BDF                   mov bx,di
0000:813D B90100                 mov cx,0001
0000:8140 E8B9FB                 call 7CFC
0000:8143 5A                     pop dx
0000:8144 8BDA                   mov bx,dx
0000:8146 C3                     ret
0000:8147                        db 0x0B7 dup(00)
0000:81FE                        dw AA55;引导有效标志
3、NTFS WIN7 PBR太长了,就偷懒了:)
 
 ****我怀疑直接将FAT、FAT32里面的"BOOTMGR    "字串改成"NTLDR      "就能直接启动NT5.X。NTFS的不用改也行(里面有UNICODE的NTLDR字串),如果要改反而更麻烦。****
 
 [ 本帖最后由 netwinxp 于 2009-12-25 08:03 编辑 ]
 | 
 |