`
Tveiker
  • 浏览: 56155 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

小试保护模式

阅读更多
前几天将段式保护模式从理论上了解了。所以这几天就借助一些书籍和网络得力量来争取实践---将代码跳入保护模式。
首先了解跳入保护模式的基本步骤
1、将代码段基址存入GDT
2、利用lgdt将GDT基址以及长度加载到gdtr寄存器
3、关中断
4、打开20号地址线
5、置位CR0的PE,准备切换
6、跳入保护模式下的代码段

下面就是这个简单跳跃得代码:
pm.inc包含一些宏定义以及段的属性定义值
 %macro Descriptor 3 
          dw  %2 & 0ffffh 
          dw  %1 & 0ffffh 
          db  (%1>>16) & 0ffh 
          dw  ((%2>>8)&0f00h)|(%3 & 0f0ffh) 
          db  (%2>>24)&0ffh 
 %endmacro 
  
 DA_32       equ     4000h   ;32位段 
  
 DA_DPL0     equ     00h     ;DPL=0 
 DA_DPL1     equ     220h    ;DPL=1 
 DA_DPL2     equ     40h     ;DPL=2 
 DA_DPL3     equ     60h     ;DPL=3 
  
 DA_DR       equ     90h     ;只读数据段 
 DA_DRW      equ     92h     ;可读可写数据段 
 DA_DRWA     equ     93h     ;可读可写已访问数据段 
 DA_C        equ     98h     ;只执行代码段 
 DA_CR       equ     9ah     ;可读可执行代码段 
 DA_CCO      equ     9ch     ;非一致可执行代码段 
 DA_CCRO     equ     9eh     ;可读非一致可执行代码段
 


protec.asm这是主要逻辑部分。功能实现得主体
%include "pm.inc"

org		07c00h
jmp		START

[SECTION .gdt]
GDT_DEC:		Descriptor  0,	0,	0
CODE32_DEC:		Descriptor  0,Code32Len-1,DA_32 + DA_CR	
VIDEO_DEC:		Descriptor  0b8000h,0ffffh	,DA_DRW

GdtLen	equ		$ - GDT_DEC	
Gdtptr	dw		GdtLen - 1
		dd		0

SelectorCode32	equ		CODE32_DEC - GDT_DEC
SelectorVideo	equ		VIDEO_DEC - GDT_DEC

[SECTION .s16]
[BITS 16]
START:
	mov		ax,cs
	mov		ds,ax
	mov		es,ax
	mov		ss,ax
	mov		sp,0100h
        ;加载代码段基址到GDT描述符
	xor		eax,eax
	mov		ax,cs
	shl		eax,4
	add		eax,CODE32_SEG
	mov	word [CODE32_DEC+2],ax
	shr		eax,16
	mov	byte [CODE32_DEC+4],al
	mov	byte [CODE32_DEC+7],ah
        ;加载GDT基址及长度到gdtr
	xor		eax,eax
	mov		ax,ds
	shl		eax,4
	add		eax,GDT_DEC
	mov	dword [Gdtptr+2],eax

	lgdt	[Gdtptr]
        ;关中断
	cli
        ;打开A20
	in		al,92h
	or		al,02h
	out		92h,al
        ;置位PE
	mov		eax,cr0
	or		eax,01h
	mov		cr0,eax
        ;跳转保护模式
	jmp		dword	SelectorCode32:0
[SECTION .s32]
[BITS 32]
CODE32_SEG:
	mov		ax,SelectorVideo
	mov		gs,ax
	mov		esi,offMessage
	mov		edi,(80*12+30)*2
	mov		ah,0ch
	cld
	call	DesplayMessage
Message:	db "Welcome protected place",0
offMessage	equ	Message - $$
DesplayMessage:
	.2:	
		mov		al,[cs:esi]
		test	al,al
	.1:
		jz		.1	
		mov		[gs:edi],ax
		add		edi,2
		inc		esi
		jmp	.2
Code32Len	equ		$	-  CODE32_SEG



不要值抄写代码运行,一旦代码不能带到目的就重抄一遍。这是不可取得。一定要自己慢慢调试,从内存角度理解每一条指令所起得作用,从内存去查看代码不能达到目的的原由。当然代码不可能一次成功,所以Bochs自带调试命令。
1、在某个物理地址设置断点
b addr            b 0x7c00

2、显示当前所有断点的信息
info break

3、继续执行直到遇到断点
c

4、单步执行
s

5、单步执行,遇到函数则跳过
n

6、查看寄存器信息
info cpu
r
fp
sreg
creg

7、查看堆栈
print-stack

8、查看内存物理地址内容
xp /nuf addr           xp /40bx  0x9013e
其中nuf表示大小,addr表示首地址

9、查看线性地址内容
x /nuf addr           x /40bx 0x13e

10、反汇编一段内存
u start end          u 0x30400 0x3040d

11、反汇编执行的每条指令
trace-on

12、每执行一条指令就打印cpu信息
trace-reg on
关闭trace-reg off
下面就是上述代码得结果。在屏幕中打印了一行红色的字



  • 大小: 18.5 KB
1
0
分享到:
评论

相关推荐

    Elixir下开发嵌入式系统开发小试身手.zip

    本项目“Elixir下开发嵌入式系统开发小试身手.zip”旨在引导开发者初步了解如何在Elixir环境下进行物联网(IoT)相关的嵌入式系统开发。下面我们将深入探讨Elixir语言与物联网开发的相关知识点。 1. **Elixir语言基础...

    科技成果转化平台建设方案分享.docx

    方案依据《甘肃省促进科技成果转移转化行动方案》制定,核心是建立一个线上线下相结合的综合转化平台,打造“四棒接力”的科技成果转化模式,解决从基础研究到工业化生产过程中可能出现的问题。 一、建立目标 该...

    2019年度科技型中小企业技术创新基金若干重点-15页.pdf

    综上,2019年度科技型中小企业技术创新基金强调的是环境保护和资源的有效利用,通过技术创新解决我国面临的环境挑战,推动绿色和可持续的发展模式。企业申请此类项目时,需充分展示其技术的独特性、实用性和可推广性...

    科技成果转化平台建设方案.pdf

    方案的主要目标是设立科技成果转化引导基金,形成“四棒接力”模式,即基础理论研究、实验室研究、中试放大与功能验证、工业化生产四个关键阶段。特别强调解决第三棒,即从中试到工业化生产阶段的衔接问题。计划到...

    蓝藻藻浆厌氧发酵技术研究现状及展望

    然而,这些研究大多处于实验室小试实验阶段,尚未有中试工程或生产性规模示范工程的公开报道。 在工程化应用方面,蓝藻产甲烷虽然具有可行性,但仍存在一些问题。首先,蓝藻的产气启动缓慢,消化时间较长,一般需要...

    DDD (领域驱动设计)落地教程

    - CQRS是将命令和查询操作分开的设计模式,31|CQRS(上)会介绍如何利用这种方法来优化查询性能,同时保持写操作的复杂性。 6. **学习挑战与建议**: - DDD的学习曲线可能会比较陡峭,加餐5|DDD很难,学不会...

    log 牛

    【标题】:“日志分析——牛刀小试” 在IT行业中,日志分析是一项至关重要的技能,尤其是在系统维护、故障排查以及性能优化等方面。本文将以“log牛”为主题,探讨如何利用工具对日志进行深入分析,从而获取关键...

    行业分类-设备装置-对含烃材料进行催化解聚的装置及方法.zip

    本领域内的催化解聚方法多种多样,包括连续流化床、固定床、移动床等反应模式,每种方法都有其独特的操作条件和适用范围。例如,连续流化床反应器适合于大规模处理,而固定床反应器则可能在提高催化活性方面具有优势...

    关于EVA4400存储的管理

    HP EVA4400存储的管理不仅涉及到硬件层面的操作,更重要的是通过复制管理器等软件工具来优化数据保护策略和提高存储效率。掌握上述知识点,能够帮助IT专业人员更好地利用HP EVA存储系列的功能,提升数据管理能力和...

    104种清除木马方法

    4. **网络浏览安全**:使用安全的浏览器,如Chrome、Firefox,并开启沙箱模式,限制恶意代码的执行环境。 5. **扫描与隔离**:对疑似感染的文件进行深度扫描,并将可疑文件隔离或删除。 6. **系统还原**:在木马...

    关于解密后的校园二手书商城c2c的数据库文件

    在这个C2C商城中,可能会有以下设计模式: 1. 用户表:存储用户的基本信息,如用户名、密码、联系方式、地址等。 2. 书籍表:包含每本书的详细信息,如书名、作者、出版社、ISBN号、新旧程度、价格等。 3. 商品评价...

Global site tag (gtag.js) - Google Analytics