首页 > 其他分享 >Window内核初步

Window内核初步

时间:2022-11-16 20:25:36浏览次数:44  
标签:11 1111 00 0000 23 初步 Window base 内核

mov 一个dword 大小的

内存访问成功几个条件

段+页

image-20220930160330482

不能通过原因是页限制 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 有效


image-20221003175250339

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 

 

image-20221008172355768

这里出现了一个问题,就是我的windbg 接收不到三环的异常 ,经过重装系统,更换系统,更换windbg版本,更换双机调试方式,orz,最后发现是vc6.0中文版的问题,这里给出这个折磨的vc有问题的版本以及hash-vc6_cn_full.exe-(MD5)A4533B9D06D1C46044BBE10124962BA7

最后补上实验

中断门前

image-20221010234718965

中断门后

image-20221010234645645

以FQ的形式来去跳转门

40106b
@$scopeip

标签:11,1111,00,0000,23,初步,Window,base,内核
From: https://www.cnblogs.com/Chis42/p/16897366.html

相关文章