boot0分析

2009-05-13 10:21:38来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

2007.8.26
今天我们通过bochs来分析boot0.
本文参考了《FreeBSD 5.2.1 boot0(启动扇区代码分析)》,转载请注明,谢谢!
源码位于:sys/boot/i386/boot0/boot0.S
安装bochs:
./configure --enable-debugger --enable-disasm
make; make install; rehash
# cp .bochsrc /root/
修改.bochsrc如下两行:
ata0-master: type=disk, mode=flat, path="/kerndebug/server.img", cylinders=0
vga: extension=none
其中/kerndebug/server.img为虚拟系统磁盘(可以用qemu的磁盘)
BIOS把引导扇区的512字节的内容读入到了0:0x7c00处,然后就跳转到0:0x7C00处去执行.
我们启动bochs,在0x7c00处设置断点。
# bochs -q -f /root/.bochsrc
========================================================================
                        Bochs x86 Emulator 2.3
              Build from CVS snapshot on August 27, 2006
========================================================================
00000000000i[     ] reading configuration from /root/.bochsrc
00000000000e[     ] /root/.bochsrc: ataX-master/slave CHS set to 0/0/0 - autodetection enabled
00000000000i[     ] installing x module as the Bochs GUI
00000000000i[     ] using log file bochsout.txt
Next at t=0
(0) [0xfffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0
b 0x7c00
c
(0) Breakpoint 1, 0x00007c00 in ?? ()
Next at t=981593
(0) [0x00007c00] 0000:7c00 (unk. ctxt): cld                       ; fc
disassemble size = 16
u/10
00007c00: (                    ): cld                       ; fc
00007c01: (                    ): xor ax, ax                ; 31c0
00007c03: (                    ): mov es, ax                ; 8ec0
00007c05: (                    ): mov ds, ax                ; 8ed8
00007c07: (                    ): mov ss, ax                ; 8ed0
00007c09: (                    ): mov sp, 0x7c00            ; bc007c
00007c0c: (                    ): mov si, sp                ; 89e6

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:使用proz来加速你的Freebsd ports安装

下一篇:init386 分析