mov 一个dword 大小的
内存访问成功几个条件
段+页
不能通过原因是页限制 x
0地址不能访问
段描述符
段描述符拆分练习
00cf9b00`0000ffff
110011111001101100000000
1 1 0 0 1111 1 0 01 1 0110 0000000
BASE 31:24 0
G 1
D/B 1
0 0
AVL 0
seg limit 1111
p 1 //段描述符有效
DPL 01
S 1
type 0110
base 23:14 0000000
80008b04`200020ab
10000000000000001000101100000100
10000000 0 0 0 0 0000 1 00 0 1011 00000100
BASE 31:24 0x80
G 0
D/B 0
0 0
AVL 0
seg limit 0000
p 1
DPL 00
S 0
type 1011
base 23:14 00000100
00cf9300`0000ffff
1 1 0 0 1111 1 00 1 0011 00000000
BASE 31:24 0X00
G 1
D/B 1
0 0
AVL 0
seg limt 1111
p 1
DPL 00
s 1
TYPE 0011
BASE 23:16 00000000
00cff300`0000ffff
1 1 0 0 1111 1 11 1 0011 00000000
110011111111001100000000
BASE 31:23 00000000
G 1
D/B 1
0 0
AVL 0
SEG LIMIT 1111
P 1
DPL 11
S 1
type 0011
BASE 23:16 00000000
ffc093df`f0000001
11111111110000001001001111011111
11111111 1 1 0 0 0000 1 00 1 0011 11011111
BASE 31:24 11111111
G 1
D/B 1
0 0
AVL 0
seg limit 0X00
P 1
DPL 00
S 1
TYPE 0011
BASE 23:16 11011111
段选择子
23
100 0 11
RPL 11 HEX:3
TI 0
INDEX 100 HEX:4
2B
00101 0 11
RPL 11 HEX:3
TI 0
INDEX :101
INDEX :5
30
00110 0 00
RPL
00
TI 0
INDEX 6
3B
00111 0 11
RPL 11
TI 0
INDEX 7
53
01010 0 11
RPL 11
TI 0
INDEX A
段描述符属性
00cf9b00
大于8 有效
8+8+16=32
G位决定limit
limit有20位 FFFFF
0位 000FFFFF
1位 FFFFFFFF
//段描述符属性练习
00cf9b00
1 1 0 0 1111 1 00 1 1011 00000000
BASE 31:24 0000 0000
G 1
D/B 1
0 0
AVL 0
seg limit 1111
p 1//段描述符有效
DPL 00
S 1
type 1011
base 23:14 0000 0000
23
100 0 11
RPL 11 HEX:3
TI 0
INDEX 100 HEX:4
23
100011
RPL 3
Ti 0
index 100 hex(4)
00cff300`0000ffff `
1 1 0 0 1111 1 11 1 0011 00000000
base 31"24 0000 0000
G 1
D/B 1
0 0
AVL 0
seg limit 1111
P 1
DPL 11
S 1
TYPE 0011
base 23:14 0000 0000
53
01010011
RPL 11 hex(3)
TI 0
INDEX 1010 hex(A)
ba0089b5`b0800068
10111010 0 0 0 0 0000 1 00 0 1001 10110101
base 31:24 10111010
g 1
D/B 0
0 0
AVL 0
seg limit 0000
p 1
DPL 00
s 0
type 1001
base 23:14 10110101
53
01010011
RPL 11 hex(3)
TI 0
INDEX 1010 hex(A)
80008955`17000068
10000000 0 0 0 0 0000 1 00 0 1001 01010101
base 31:24 1000 0000
G 0
D/B 0
0 0
AVL 0
seg limit 0000
p 1
DPL 00
s 0
type 1001
base 23:14 01010101
段描述符属性
00cf9300
1 1 0 0 1111 1 00 1001100000000
base31:24 0000 0000
G 1
D/B 1
0 0
AVL 0
seg limit 1111
P 1
DPL 00
00cf9300
1 1 0 0 1111 1 00 1 0011 0000 0000
base 31:24 0000 0000
G 1
D/B 1
0 0
AVL 0
seg limit 1111
p 1
DPL 00
s 1 //代码或数据
type 0011//数据 可读写 已被访问过 向上扩展
base 14:23 0000 0000
00cf9b00
1 1 0 0 1111 1 00 1 1011 00000000
base 31:24
g 1
D/B 1
0 0
AVL 0
seg limit 1111
p 1
DPL 00
S 1 //数据或者代码
type 1011 //代码段 被读写 已访问 非一致
seg 14:23 00000000
00cffb00
1 1 0 0 1111 1 11 1 1011 00000000
base 31:24 0000 0000
g 1
D/B 1
0 0
AVL 0
seg limit 1111
p 1
DPL 11
s 1
type 1011
base 23:14 00000000
80008b04
1000 0000 0 0 0 0 0000 1 00 0 1011 00000100
base 31:24 1000 0000
g 0
D/B 0
0 0
AVL 0
seg limit 0000
p 1
DPL 00
s 0
type 1011 //代码 非一致 可读写 已被访问
base 23:14 00000100
书
windows内核原理与实现 windows内核情景分析
8003f000 00000000`00000000 00cf9b00`0000ffff
8003f010 00cf9300`0000ffff 00cffb00`0000ffff
8003f020 00cff300`0000ffff 80008b04`200020ab
8003f030 ffc093df`f0000001 0040f300`00000fff
8003f040 0000f200`0400ffff 00000000`00000000
8003f050 80008955`17000068 80008955`17680068
8003f060 00009302`2f40ffff 0000920b`80003fff
8003f070 ff0092ff`700003ff 80009a40`0000ffff
00cf9300 00cff300 ffc093df 0040f300 0000f200 00009302 0000920b ff0092ff
3 3 3 3 3 3 3 3
00000000
0
mov ax,0x23 //根据0x23来进行段选择子 00100011 11 rpl 3 ti 0 index(hex(4)) 选择到00cff300 先检查p位 这个段描述符是否有效 如果这个cs == 0x1B 这时候CPL=3 RPL=3 非一致代码段 可读写 已被访问过
mov ds,ax //再把这个段选择子和段描述符属性的弄过去
DB位
分为不同段寄存器的情况
代码间的跳转
JMP 0x20:0x004183D7
1.段选择子拆分
2.根据ti选择查什么表 gdt表找到对应的段描述符
3.拆分段描述符 check权限 如果是非一致代码段 就要CPL=DPL RPL<=DPL
一致代码段 CPL>=DPL
4.通过权限检查后,cs把段描述符加载到cs段寄存器
5.cpu将cs.base+offset写入eip 实现指令和数据加载同步
//查表得到段描述符
//只能四个情况才能跳转 代码段 调用吗 tss任务段 任务门
调用门
00cf9b00`0000ffff
base 31:23 0000 0000
1 1 0 0 1111 1 00 1 1011 00000000
G 1
D/B 1
0 0
AVL 0
seg limit 23:17 1111
p 1
DPL 00
s 1
type 1011
这里出现了一个问题,就是我的windbg 接收不到三环的异常 ,经过重装系统,更换系统,更换windbg版本,更换双机调试方式,orz,最后发现是vc6.0中文版的问题,这里给出这个折磨的vc有问题的版本以及hash-vc6_cn_full.exe-(MD5)A4533B9D06D1C46044BBE10124962BA7
最后补上实验
中断门前
中断门后
以FQ的形式来去跳转门
40106b
@$scopeip
标签:11,1111,00,0000,23,初步,Window,base,内核
From: https://www.cnblogs.com/Chis42/p/16897366.html