0%

os真象还原-笔记

第一章

下载bochs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#下载bochs的2.6.2版本
https://sourceforge.net/projects/bochs/files/bochs/2.6.2/bochs-2.6.2.tar.gz/download?use_mirror=jaist&use_mirror=jaist&r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fbochs%2Ffiles%2Fbochs%2F2.6.2%2F
#解压
tar -zxvf bochs-2.6.2.tar.gz
#编译
cd bochs-2.6.2/

./configure \
--prefix=/home/winter/zhen/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11

#替换 Makefile 92行为如下语句
LIBS = -lm -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lpthread

make
make install

第二章

知识点

概念性

  1. CPU的硬件电路被设计成只能运行处于内存中的程序。

  2. 动态:存储介质由于本身电气元件的性质,需要动态刷新【补充电】

  3. CPU可访问的地址 != 物理内存

    CPU提交地址 => 根据地址范围,地址被映射到不同存储设备 => ROM、显存、内存条等

  4. 魔数:没有明确定义的数

  5. $:表示当前行

  6. $$:表示本section的地址

  7. bin文件:纯二进制

BIOS

全称:Base Input & Output System【基本输入输出系统】

主要工作:检测、初始化硬件和建立中断向量表

  • 是计算机第一个运行的程序

  • 由硬件加载

  • BIOS被加载到ROM低端1MB【0xf0000 ~ 0xfffff】

  • BIOS入口地址:0xffff0【开机时,cs:ip寄存器被强制初始化为0xf000:0xfff0】

    入口地址的指令:jmp far f000:e05b【BIOS代码真正开始的地方】

磁盘扇区表示法

CHS方法
  • 柱面(Cylinder):所有盘面上,编号相同的磁道集合
  • 磁头(Header):一张盘有上下两个盘面,一个盘面对应一个磁头 => 使用磁头表示盘面
  • 扇区(Sector):磁道划分的小区间【扇区编号从1开始】
LBA方法

【扇区编号从0开始】

MBR

  • 主引导记录

  • 存在0盘0道1扇区【磁盘的第一个扇区】

    • 扇区末尾两个字节是0x55和0xaa
    • 物理地址0x7c00【存储于最小内存32KB最后部分,且需保证自身可以运行1KB => 0x8000 - 0x400 = 0x7c00】
    • 大小:必须为512字节 => 保证扇区末尾两个字节是0x55和0xaa

dd命令

用于磁盘操作

1
dd if=读取文件路径 of=输出文件路径 bs=块大小 count=拷贝的块数 conv=notrunc(文件转换方式:不打断文件)
Q:如果阅读本文需要付费,你是否愿意为此支付1元?