首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详解MBR篡改技术

填充: ? 修改切记保存,才能使修改的数据真正写入到磁盘中。然后重启电脑。 哦,对了,实验务必虚拟机中进行,务必做好快照,哈哈哈~~~~~前面忘说了。...2、RING3层直接读写磁盘数据 Windows利用内核模式与用户模式的严格切分确保了可靠性,这两种模式分别对应了CPU的Ring0与Ring3级别,Ring3级下执行的程序是不能够直接访问到硬件的。...而程序中对磁盘的操作直接使用了fopen等文件操作函数,这是为什么?...0x8000位置 mov si, 0x7E00.copy lodsb xor al, 0xA6 ;备份的MBR数据进行解密操作 mov [si-0x201], al ;将还原的MBR装载到内存0x7C00...根据之前我们对MBR工作机制的认识,当MBR被破坏时,系统无法正常引导,磁盘分区信息丢失,所以需要修复这两部分才可以正常启动系统。

1.5K20

Linux 系统开机发生了什么?

BIOS是如何启动的,CPU硬件逻辑设计为电瞬间强行将CS值置为0XF000,IP为0XFFF0,这样CS:IP就指向0XFFFF0这个位置,这个位置正是BIOS程序的入口地址。...当MBR被装载到RAM中,BIOS就会将控制权转交给MBR。...在次 boot loader 存在与内存中,就可以对文件系统进行查询了,同时将默认的内核镜像以及初始化内存盘镜像也被加载到内存中。...加载内核并从实模式转换为保护模式 当内核映像被加载到内存中(加载过程仍然用int 0x13中断向量),并且次引导加载程序释放控制权之后,内核阶段就开始了。...执行/etc/rc.d/rc.local 你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然: rc.local就是一切初始化工作,Linux留给用户进行个性化的地方。

1.9K40
您找到你想要的搜索结果了吗?
是的
没有找到

linux系统开机发生了什么?

BIOS是如何启动的,CPU硬件逻辑设计为电瞬间强行将CS值置为0XF000,IP为0XFFF0,这样CS:IP就指向0XFFFF0这个位置,这个位置正是BIOS程序的入口地址。...当MBR被装载到RAM中,BIOS就会将控制权转交给MBR。...在次 boot loader 存在与内存中,就可以对文件系统进行查询了,同时将默认的内核镜像以及初始化内存盘镜像也被加载到内存中。...加载内核并从实模式转换为保护模式 当内核映像被加载到内存中(加载过程仍然用int 0x13中断向量),并且次引导加载程序释放控制权之后,内核阶段就开始了。...rc.local就是一切初始化工作,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

2.5K30

【windows kernel源码分析】对初学者友好的底层理解,让你对计算机内核不再迷茫

Intel x86引导的故事中,此时处理器是实模式下运行的,能够处理1 MB的内存,RAM对于现代Linux系统是这样的: 引导加载程序完成的RAM内容 内核镜像已经由BIOS中的引导加载程序中的...这个内存区域用于 引导加载程序 和 内核 之间实现Linux引导协议。其中一些值是引导加载程序执行其工作时读取的。比如包含内核版本的可读字符串,也包含其他重要信息,比如实模式内核块的大小。...引导加载程序还将值写入该区域,例如用户引导菜单中给出的命令行参数的内存地址。引导加载程序完成,它已经填充了内核头部所需的所有参数。现在是跳到内核入口点的时候了。...系统的启动过程一般分为5个步骤: (1)预引导过程 [1] 计算机电自检,同时完成硬件设备的枚举和配置。 [2] BIOS确定引导设备位置,加载引导设备的MBR。...(3)内核加载,[8]清除屏幕,显示进度条。

72010

计算机操作系统-操作系统启动过程

(PBR),MBR分区中存在主启动扇区。...MBR读取活动分区的第一个分区(分区引导记录PBR),并把他加载到内存中去。...PBR继续控制后面的引导过程 操作系统的启动 (1)初始引导 目的:把OS的核心装入内存并使之开始工作接管计算机系统 过程: 1)电,JUMP POST 2)BIOS中的启动程序: 读取0面...1.POST 2.BIOS启动主机自检程序 3.初始引导 BIOS从MBR读取引导程序,装入内存的特点文职 引导程序启动DOS7.0,调入操作系统核心 WINDOWS开始接管系统 4...->内核初始化->内核启动->加载init程序 KERNEL映像是一个zlib压缩国的内核映像 内核完成引导,加载init程序 进程号1 init进程通过/etc/inittab脚本进行初始化

9210

Linux学习笔记之Linux启动引导过程

嵌入式平台中,当系统电或重置时,会使用一个启动环境。这方面的例子包括 U-Boot、RedBoot 和 Lucent 的 MicroMonitor。嵌入式平台通常都是与引导监视器搭配销售的。... PC 中,引导 Linux 是从 BIOS 中的地址 0xFFFF0 处开始的。BIOS 的第一个步骤是电自检(POST)。POST 的工作是对硬件进行检测。...主引导加载程序的工作是查找并加载次引导加载程序(第二阶段)。它是通过分区表中查找一个活动分区来实现这种功能的。当找到一个活动分区时,它会扫描分区表中的其他分区,以确保它们都不是活动的。...将第二阶段的引导加载程序加载到内存中之后,就可以对文件系统进行查询了,并将默认的内核映像和 initrd 映像加载到内存中。当这些映像文件准备好之后,阶段 2 的引导加载程序就可以调用内核映像了。...在内核引导过程中,初始 RAM 磁盘(initrd)是由阶段 2 引导加载程序加载到内存中的,它会被复制到 RAM 中并挂载到系统上。

10.4K41

实战操作系统 loader 编写(上) -- 进入保护模式

引言 此前的文章中,我们详细介绍了从引导扇区跳转到 loader 的工作: 从启动扇区跳转到 loader 引导扇区的工作已经告一段落,接下来我们的工作就是编写我们的 loader 了。...loader 的工作只有两个: 将内核载入内存 跳入保护模式 本文我们就来详细介绍一下。...2. loader 加载内核的过程 有了通过引导扇区加载 loader 的经验,让 loader 加载内核就简单的多了。...从原理上来说,loader 加载内核也同样是从 FAT12 的软盘文件系统上找到内核入口文件,这与引导扇区做的事情并没有很大的区别,这里也不进行详细的介绍,只是分块大致讲解一下。...其原理上一篇文章已经介绍过: 详解 Linux 可执行文件 ELF 文件的内部结构 ELF 文件是 unix 环境上编译生成的可执行可连接文件,他通过多个 section 来组织编译的可执行代码,若干个

95120

linux内核升级图文攻略 转

但是没有软件来操作和控制它,自身是不能工作的。 完成这个控制工作的软件就称为操作系统,Linux的术语中被称为“内核”,也可以称为“核心”。...计算机启动时都是先电, 然后进行硬件检测并引导操作系统的初始化程序, 然后操作系统的初始化程序程负责读入系统内核并建产系统的运行环境....2、加载和执行引导程序  系统引导程序主要是把系统内核载到内存,启动盘必须在第一个逻辑磁道上包含引导记录。...这512个字节的扇区又被称作是引导扇区, 系统完成电自检, BIOS从启动盘中将引导扇区读入到内存中。 引导记录中包含了一些磁盘的物理特性的参数。...引导扇区被读入内存,BIOS就能从这里读取到启动盘的物理参数。 一旦引导记录加载完毕,BIOS就交出系统的执行控制权,跳转到引导程序 的头部执行。

3.1K51

Linux根文件系统(rootfs原理详解)

2 根文件系统 根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。...文件系统和内核是完全独立的两个部分。嵌入式中移植的内核载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误。...3 根文件系统为什么这么重要 根文件系统之所以在前面一个”根“,说明它是加载其它文件系统的”根“,那么如果没有这个根,其它的文件系统也就没有办法进行加载的。...根文件系统提供了根目录“/”; linux挂载分区时所依赖的信息存放于根文件系统/etc/fstab这个文件中; shell命令程序必须运行在根文件系统上,譬如ls、cd等命令; 总之:一套linux体系,只有内核本身是不能工作的...根文件系统被挂载到根目录下“/”上根目录下就有根文件系统的各个目录,文件:/bin /sbin /mnt等,再将其他分区挂接到/mnt目录上,/mnt目录下就有这个分区的各个目录和文件。

11.7K40

FPGA Xilinx Zynq 系列(三十七)Linux 启动

当菜单中的一个引导选项被选定引导装载程序会装载相应的操作系统,然后那个操作系统自己的代码会解压、装载自己到内存中去,然后再初始化内核。...在内核启动之前,引导装载程序还会执行一些其他的功能,不过这些以后再说。所需的内核模块成功启动引导过程的最后一个阶段调用第一个用户空间的 函数:init。这个函数初始化系统所有的高层部分。...图 24.2: 主引导记录 (MBR)的结构 初级引导装载程序的工作就是搜索分区表中有效的分区,找到 SSBL 然后装载进来。一旦找到有效的分区,还会继续扫描其他的分区以确保其他都是不能引导的分区。...因为 PS用了可编程逻辑中的硬件模块来做 AES-256和 HMAC(SHA-256)解密和认 证,安全引导过程中 PL 必须被电。...这里的 SSBL 是 U-Boot,它负责把压缩了的 Linux 内核映像、系统设备树和 ramdisk映像装载到内存中。一旦这些映像装载到了内存里,U-Boot 会启动 Linux 内核的执行。

3.2K10

解析 Linux 操作系统启动流程(CentOS 6)

电自检(POST) 电自检(power-on-self-test)用来检查各硬件是否正常工作,如 cpu、内存、显卡、硬盘、键盘等。...电自检的过程是通过主板上的 ROM 芯片(CMOS)所定义的程序来实现的,CMOS 可以做一些设定,是通过基本输入输出系统(BIOS)实现的,如选择计算机由哪块设备进行引导。...引导加载次序(BOOT Sequence) 按 BIOS 设定的引导次序依次加载设备,第一个发现有引导程序的设备即为本次启动的设备,没有 boot loader 无法引导,会跳过设备。...Boot Loader 用于查找操作系统所在的磁盘分区,并把内核解压并加载到内存的指定空间中,最后将控制权转交给内核。...init 初始化 内核初始化,后续进行的是用户空间的初始化,如何初始化由 init 的配置文件决定。

1.5K00

linux centos系统开机启动流程

系统启动总体流程:         任何系统启动的第一步都是电,也就是按下电源,然后计算机硬件会主动读取BIOS来加载硬件设备信息以及硬件设备的自我检测,之后系统会主动地读取第一个有引导程序的设备,...也就意味着引导程序被激活,分区表信息已经加载到内存,同时也意味着对系统的控制权从BIOS过渡到GRUB.GRUB是GRand Unified Bootloader的缩写。...而内核会立即初始化系统中各设备并做相关的配置工作,其中包括CPU、I/O、存储设备等。...在内核启动前,Boot Loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。...通过上的分析和我们的验证,我们确实得到了这样的结论:          grub的stage2将initrd加载到内存里,让将其中的内容释放到内容中,内核便去执行initrd中的init脚本,这时内核将控制权交给了

3.3K30

【swupdate文档 一】嵌入式系统的软件管理

如,用于下载到相连接的微控制器的固件等 一般来说,大多数情况下是需要更新 内核和根文件系统,保存用户数据-但实际情况各不相同。...通过引导加载程序完成更新 引导加载程序所做的工作远不止启动内核那么简单。 它们有自己的shell,且可以使用处理器的外围设备 进行管理,大多数情况下是通过串行通讯。...支持新外围设备或协议的工作, 在内核中进行得更好,而不是引导加载程序中。 简化版的文件系统 支持的文件系统的数量是有限的。 将文件系统支持移植到引导加载程序需要付出很大的努力。...通过包管理器更新 所有的Linux发行版都使用包管理器做更新, 为什么这不适用于嵌入式系统? 我不能说它不能被使用,但是使用这种方法有一个重要的缺点。...与引导加载程序的协作通常是必要的, 因为引导加载程序必须决定应该启动哪个副本。 同样,必须能够两个副本之间进行切换。 重新启动引导加载程序决定应该运行哪个副本。 ?

1.9K20

操作系统的启动

grub这些引导启动程序中如何继续遵守三方协议。...MBR分区中,第一个扇区的内容是十分关键的,它是主引导记录,如果操作系统需要按照MBR分区形式安装在这个硬盘中,那么需要在主引导记录里填入引导系统启动的代码。...为例,首先电源,主板会将BIOS从ROM里读取并放入内存RAM里,其在内存的位置是0xFE000~0xFFFF0,共计8KB,此时CPU电后会进入16位实模式,通过硬件逻辑强行把自己的CS的值设置为...那么BIOS执行,需要从硬盘或其他地方读取内核的代码,让内核执行起来,这如何做到呢?...bootsect中,读取的是从第二个扇区开始的4个扇区,加载到0x90200(SETUPSEG)处,这些内容对应linux/boot/setup.s这个文件。

1.3K30

操作系统(2)启动、中断、异常、系统调用

电脑电的时候会去执行BIOS部分。 约定电的时候,CPU完成初始化之后从上图中地址开始执行代码。...具体过程是: 之所以不能从BIOS里面直接读取系统的内核映像,是因为要先确定了磁盘上的文件系统(市面上的文件系统有很多种)才可以读取。...我们是直接预先约定好不需要知道文件系统的类型,就可以直接读取第一块数据,然后根据这些数据来识别磁盘上的文件系统,最后读取磁盘上的操作系统的内核映像并加载到内存。...最后提一下BIOS提供的功能和限制: 注意,进入保护模式之后,即离开了实模式之后就不能使用BIOS了,也就没办法使用BIOS提供的功能,这时候如果需要使用这些功能就要操作系统自己想办法实现。...确定主引导扇区之后就可以确定去哪个活动分区读取程序了。 自检是为了确定关键的几个硬件正常工作

1.3K10

linux rootfs_linux常用文件系统类型

同样引自百度百科的解释: 根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行...,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。...我们要明白文件系统和内核是完全独立的两个部分。嵌入式中移植的内核载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误。...三、根文件系统为什么这么重要 根文件系统之所以在前面一个”根“,说明它是加载其它文件系统的”根“,那么如果没有这个根,其它的文件系统也就没有办法进行加载的。...根文件系统提供了根目录“/”; linux挂载分区时所依赖的信息存放于根文件系统/etc/fstab这个文件中; shell命令程序必须运行在根文件系统上,譬如ls、cd等命令; 总之:一套linux体系,只有内核本身是不能工作

1.6K20

CentOS 6 启动流程详细介绍

,而是依靠一个软件来完成的,这个软件就是BIOS(Basic Input Output System)基本输入输出系统,它安装在CMOS芯片上,上电就是给CMOS电,然后启动BIOS程序,BIOS会根据...3、 Kernel、initrd/initramfs: /boot目录下包含vmlinuz,initramfs等内核相关的文件,Boot Loader读取/boot目录下所有文件、配置文件与环境参数信息...,会把内核解压加载到内存中,根据内核提供的功能开始检测,加载各个设备,此次检测与BIOS自检不同,执行到此,后续工作都由内核来完成(因为Boot Loader已把vmlinuz,initramfs加载到内存中...),此时内核还没有加载磁盘,因为还没有磁盘驱动程序,内核通过/boot目录下的虚拟文件系统,也就是initramfs,模拟一个rootfs(根文件系统),加载启动过程中所需要的核心模块,加载释放rootfs...4、 Init: 用户空间第一个执行程序,在内核,硬件及驱动加载完成内核会执行用户空间的第一个执行程序/sbin/init,init 程序主要功能为准备软件运行环境,包括系统主机名称,网络配置,文件系统格式等其他服务配置

65531

QNX4系统启动过程

4. startup程序配置系统,然后启动neutrino微内核和进程管理器procnto。 5. procnto模块装载附加的驱动和应用程序。 image.png 下面主要以QNX 4介绍....image.png QNX4启动 计算机, 首先由板上自带的 BIOS 进行检测通过后从硬盘的 第一个物理扇区( 0 磁道 0 柱面 1 扇区) 读入"引导块"( Loader block) 并把执行控制权交给引导程序...引导程序执行将会选择一个可启动的硬盘分区来启动系统。...image.png 系统映象一般包含 boot 、 Proc32、 sinit 这 3 个进程, 当它被加载到内存, 首先执行boot进程,实模式下完成系统的初始化工作将机器设置为保护模式...接着执行 Proc32进程, 该进程包含系统微内核, 主要完成处理器的初始化并对系统映象所包含的各个进程进行运行调度; 最后执行sinit进程, sinit进程通过启动一个shell来执行脚本命令从而对系统进行第二阶段的初始化

1.8K10

基于Linux的pc启动过程

BIOS程序固化主板上的一块芯片上,是连接计算机硬件与操作系统的桥梁,它保存着计算机最重要的基本输入输出的程序、开机自检程序和系统自启动程序。 那么问题来了,BIOS程序又是怎么启动的?...随后,引导程序的作用下,陆续将操作系统的其他程序载入内存,完成实模式到保护模式的转变,为执行操作系统的入口函数main做准备,后面就是操作系统的初始化工作了,最后完成计算机的启动。...它类似于BIOS,系统加载前,用以初始化硬件设备,建立内存空间的映像图,为最终调用系统内核准备好环境。Android里没有硬盘,而是ROM,它类似于硬盘存放操作系统,用户程序等。...ROM跟硬盘一样也会划分为不同的区域,用于放置不同的程序,Android中主要划分为一下几个分区: /boot:存放引导程序,包括内核和内存操作程序 /system:相当于电脑c盘,存放Android...ROM预先映射到该地址上,当开机电的时候,cpu就会从该地址执行/boot分区下的Bootloader程序,载入linux内核到RAM中。

1.9K00
领券