微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GRUB阶段1.5的代码在磁盘上的位置和它被加载的地址是什么?

我已经安装了grub v1.98 ,在拆解MBR之后,我find了下面的代码片段,我不明白:

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

看来这段代码试图设置stage 1.5代码的磁盘地址,然后加载并运行它。 然而,我怎么能找出它试图读取哪个物理块? 更重要的是,舞台1.5代码的目标是什么? 0x7000 ?

我指的是Windows 7的MBR,后续启动代码加载0x7c00 。 给定MBR首先被加载到地址0x7c00 ,它包含一个从0x7c00到0x7c00复制MBR的代码,然后在原始代码被破坏的情况下分支到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相同的事情,将原始MBR从0x7c00复制到0x0600 ,除了第一个jmp指令。 这些代码是否会被执行? 如果是的话,什么时候控制跳到这里(我相信答案是YES,但是被领先的jmp糊涂了)。

更改启动顺序c#

为什么使用共享库时,Linux上的应用启动速度较慢?

将符号链接添加到rc <number> .d文件夹以在系统启动过程中启动进程

在Windows中启动另一个进程时如何启动进程

如何使Autohotkey在启动时自动运行?

registry启动项与runas参数?

把应用程序启动

我怎样才能在每次启动时运行我自己的脚本

如何在CentOS 5.10上创build已安装的STUNNEL服务

在Windows cmd上启动Glassfish4空指针

GRUB 1.98是GRUB版本2.在版本2中,没有1.5阶段了。 第1.5阶段在MBR和第一个分区之间有一个固定的位置。 这是硬盘上最常使用的空间。 GPT分区和其他(不寻常的)布局不提供这个空间。

在GRUB v2阶段1加载core.img,它可以存储在任何LBA48位置,通常在MBR和第一个分区之间,但也可以存储在一个分区中。 在GPT的非EFI情况下,应为其创建自定义分区。 该地点硬连线到阶段1。

另见: http : //www.gnu.org/software/grub/manual/grub.html#Images

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐