xor ax,axmov [si+0x4],axinc axmov [si-0x1],almov [si+0x2],axmov word [si],0x10mov ebx,[0x7c5c]mov [si+0x8],ebxmov ebx,[0x7c60]mov [si+0xc],ebxmov word [si+0x6],0x7000mov ah,0x42int 0x13
看来这段代码试图设置阶段1.5代码的磁盘地址,然后加载并运行它.但是,我怎么能弄清楚它试图读取哪个物理块?更重要的是,舞台1.5代码的目的地是什么? 0x7000?
我指的是windows 7的MBR,后续启动代码加载0x7c00.鉴于MBR首先在地址0x7c00加载,它包含一段代码,将MBR从0x7c00复制到0x0600,然后在原始代码损坏的情况下分支到0x0600.将加载阶段1.5代码与地址0x7000冲突的原始代码?更重要的是,我还发现:
jmp short 0x65nopsar byte [si+0x7c00],1mov es,axmov ds,axmov si,0x7c00mov di,0x600mov cx,0x200cldrep movsbpush axpush word 0x61cretf
在MBR的开头.似乎代码试图做同样的事情,在windows 7的MBR中将原始MBR从0x7c00复制到0x0600,除了第一个jmp指令.这些代码实际上会执行吗?如果是,那么什么时候会控制跳跃.(我相信答案是肯定的,但是被领先的jmp困惑了).
解决方法 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
总结以上是内存溢出为你收集整理的linux – GRUB stage 1.5的代码驻留在磁盘上的位置是什么?它加载的地址是什么?全部内容,希望文章能够帮你解决linux – GRUB stage 1.5的代码驻留在磁盘上的位置是什么?它加载的地址是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)