Где на диске находится код GRUB этапа 1.5 и по какому адресу он загружается?

У меня установлено grub v1.98, и после разборки MBR я нахожу следующий фрагмент кода, который мне непонятен:

xor ax,ax
mov [si+0x4],ax
inc ax
mov [si-0x1],al
mov [si+0x2],ax
mov word [si],0x10
mov ebx,[0x7c5c]
mov [si+0x8],ebx
mov ebx,[0x7c60]
mov [si+0xc],ebx
mov word [si+0x6],0x7000
mov ah,0x42
int 0x13

Кажется, этот фрагмент кода пытается установить адрес диска кода этапа 1.5, затем загрузить и запустить его. Однако как мне выяснить, какой физический блок он пытается прочитать? Более того, каково назначение кода этапа 1.5? 0x7000?

Я имею в виду MBR для Windows 7, куда загружается последующий загрузочный код 0x7c00. Данный MBR сначала загружается по адресу 0x7c00, он содержит фрагмент кода, копирующий MBR из 0x7c00в 0x0600, а затем переходит к 0x0600в случае повреждения исходного кода. Будет ли код загрузки этапа 1.5 по адресу 0x7000конфликтовать с исходным кодом? Более того, я также нахожу:

jmp short 0x65
nop
sar byte [si+0x7c00],1
mov es,ax
mov ds,ax
mov si,0x7c00
mov di,0x600
mov cx,0x200
cld
rep movsb
push ax
push word 0x61c
retf

в начале МБР. Кажется, код пытается сделать то же самое, что и в MBR Windows 7, чтобы скопировать исходную MBR из 0x7c00в 0x0600, за исключением первой инструкции jmp. Будут ли эти коды на самом деле выполняться? Если да, то когда здесь будут контролировать прыжки. (Думаю, ответ ДА, но меня смущает ведущийjmp).

6
задан Andrew Medico 10 December 2014 в 16:48
поделиться