首页
社区
课程
招聘
Windows内核-保护模式(一)
发表于: 2022-8-10 01:39 9452

Windows内核-保护模式(一)

2022-8-10 01:39
9452

1.添加debug调试模式


2.虚拟机设置

\\.\pipe\com1

3.windbg

-y SRV*D:\mysymbol*http://msdl.microsoft.com/download/symbols -b -k com:port=\\.\pipe\com1,baud=115200,pipe

4.加载符号表

ds:0023

段描述符:00cff300`0000ffff

二进制:00000000 1100 1111 1 11 1 0011 00000000

P

S

Type

D/B

G

AVL和21位

权限

当段描述符的S标志位0,该描述符为系统描述符


调用门



Offset in Segment

函数的逻辑地址

Segment Selector

目标代码段的段选择子(提权)

Param Count

参数个数


调用门实验

1.vs2008属性修改

2.代码

打开DebugView,证明已经提权成功



3.windbg构建调用门描述符

4.堆栈变化

中断门描述符

中断门在idt表里面,构建一个类似int 3 功能的中断门描述符

代码

查看堆栈变化dds esp

中断门影响的Eflags位

1.把idt表中int 3位置处的段选择子0008改为0048(找我们自己构建的段描述符)

2.构建gdt48位置的段描述符

3.DbgPrint的地址


4.代码

陷进门描述符


构建陷进门

代码

中断门影响的Eflags位

1.TSS



2.TSS描述符



3.操作系统默认的tr为28


4.查看TSS结构

Previous Task Link存放的是上一个任务的段选择子

5.在gdt表48位置构建任务段

6.代码

7.手动修复cr3,使程序能正常返回。执行到打印TSS地址那里,然后进windbg手动修复cr3


任务门

16-31位是任务段的选择子

代码

构建任务门和调用门

修复cr3



1.打开EasyBCD工具

添加新条目--名称--添加新条目


高级设置-->高级-->PAE改为禁用,不执行改为常关


高级设置-->开发-->勾上在内核调试模式下运行windows



2.kernel区分

1.用ce搜索记事本内本,得到线性地址0032E310


2.拆分线性地址

3.windbg查看物理地址

实验



物理页结构



实验目的:把A进程的物理页挂到B进程的0地址上,通过远程线程跑起来

1.0地址执行代码.cpp


2.test.cpp


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2022-8-11 16:36 被zhang_derek编辑 ,原因:
收藏
免费 13
支持
分享
最新回复 (2)
雪    币: 229
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
收藏
2022-8-17 14:27
0
雪    币: 14488
活跃值: (17488)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2022-8-22 10:12
0
游客
登录 | 注册 方可回帖
返回
//