摘要: #include "stdafx.h" #include <windows.h> DWORD* buf; void __declspec(naked) Test(){ __asm{ pushad pushfd } *(unsigned __int64*)(((0x0000>>9)&0x7FFFF8) 阅读全文
posted @ 2020-12-24 20:22 Harmonica11 阅读(199) 评论(0) 推荐(0) 编辑
摘要: kd> u MmIsAddressValid l50h nt!MmIsAddressValid: 80511980 8bff mov edi,edi 80511982 55 push ebp 80511983 8bec mov ebp,esp 80511985 51 push ecx 8051198 阅读全文
posted @ 2020-12-24 20:21 Harmonica11 阅读(195) 评论(0) 推荐(0) 编辑
摘要: CR3-->PDPT|PDPTE0|-->PDT-->PTT-->物理内存 |PDPTE1| |PDPTE2| |PDPTE3| 每个表项十六个字节,结构 PDE/PTE保留位的第一处为XD位,判断该位是否可执行,XD=1时不可执行 实验 测试代码 #include "stdafx.h" void 阅读全文
posted @ 2020-12-24 20:20 Harmonica11 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 物理页的属性=PDE的属性&PTE的属性(后三个字节为属性) P:P=1为有效物理页 R/W:R/W=1可读可写 R/W=0只读 U/S:U/S=0 特权用户 U/S=1 普通用户 PS:PS=1时PDE直接指向物理页 A:A=1被访问过 D:D=1被写过 实验一:修改字符串(R/W) 测试代码 # 阅读全文
posted @ 2020-12-24 20:19 Harmonica11 阅读(79) 评论(0) 推荐(0) 编辑
摘要: CR3-->PDT|PDE0|-->PTT0|PTE0|-->物理内存 |PDE1| |PTE1| |PDE2| |PTE2| 将一个线性地址分为10,10,12三部分,分别为PDT,PTT,物理内存的偏移 如果为大页则分为10,22两部分,分别为PDT,物理内存的偏移 CR3-->PDT-->物理 阅读全文
posted @ 2020-12-24 20:18 Harmonica11 阅读(147) 评论(0) 推荐(0) 编辑
摘要: TSS结构 使用TSS过程 在GDT表中有TSS段描述符,TR寄存器Base Address为TSS位置,Segment Limit为TSS长度 TSS段描述符结构 B位如果为0表示还未加载到TR寄存器中,为1则已经加载 任务门结构 任务门放在IDT表中 实验 构造任务门 eq 8003f500 0 阅读全文
posted @ 2020-12-24 20:16 Harmonica11 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 中断门与陷阱门在IDT表中,查看IDT表 kd> dq idtr L40h 8003f400 80538e00`0008f19c 80538e00`0008f314 8003f410 00008500`0058113e 8053ee00`0008f6e4 8003f420 8053ee00`0008 阅读全文
posted @ 2020-12-24 20:15 Harmonica11 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 结构 根据上一篇段描述符,S位为0,Type为1100 Param Count为传递的参数数量 Segment Selector为段选择子 offset 31:16+15:00为调用的地址 调用门提权实验 环境: Windows XP SP3 //win7会蓝屏 ollyice windbgX 先做 阅读全文
posted @ 2020-12-24 20:13 Harmonica11 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 段描述符 结构 P位 P=1:段描述符有效 P=0:段描述符无效 G位 G=0:段寄存器Limit单位为字节,Limit最大值0x000FFFFF G=1:段寄存器Limit单位为4KB,Limit最大值0xFFFFFFFF S位 S=1:代码段或数据段描述符 S=0:系统段描述符 Type 如果S 阅读全文
posted @ 2020-12-24 20:11 Harmonica11 阅读(617) 评论(0) 推荐(0) 编辑