- 博客(11)
- 资源 (4)
- 收藏
- 关注
原创 进程线程001 进程线程结构体和KPCR
文章目录前言EPROCESSKPROCESS主要成员EPROCESS其他成员ETHREADKTHREAD主要成员介绍ETHREAD其他成员介绍KPCRKPCR介绍_NT_TIB主要成员介绍KPCR的其他成员介绍KPRCB成员介绍KPRCB成员介绍前言进程线程的知识点很多,如果我们想了解问题的本质,就要从一些关键的结构体学起,先来介绍一个与进程密切相关的结构体EPROCESS每个进程在零环都...
2019-12-26 21:33:05 1360
原创 系统调用004 SSDT
文章目录前言KeServiceDescriptorTableSSDTSSDT Shadow前言之前我们了解到通过KTHREAD结构体0xE0的位置可以找到系统服务表,这个位置是我们通过逆向得出的。实际上,WIndows提供了一个导出的全局变量,通过这个导出的全局变量,我们就可以直接访问系统服务表。KeServiceDescriptorTable用IDA打开ntkrnlpa.exe,在导出表...
2019-12-23 22:02:20 480
原创 系统调用003 系统服务表
文章目录前言SystemServiceTable 系统服务表系统服务表在哪判断调用的函数在哪个表API函数的调用过程前言我们现在已经知道API怎么从三环进入零环,从三环进零环需要带两个寄存器,分别是eax和edx。eax保存的是系统的服务号,edx保存的是三环的esp,通过esp可以找到三环的参数。这次要解决的问题是如何通过eax找到零环的函数,零环的函数是怎么被调用的,并且零环的函数执行的...
2019-12-22 17:09:50 707
原创 系统调用002 KiSystemService函数逆向分析
文章目录前言保存现场_KTRAP_FRAMEKRPCExceptionList_KTHREAD结构体先前模式抬高堆栈判断当前权限更新_KTRAP_FRAME保存三环的寄存器环境判断调试状态前言之前我们详细了解了API从三环进到零环的过程,API会通过两种方式进入到零环,如果通过中断门的方式进入零环,最终会进入到KiSystemService这个函数。接下来就来分析KiSystemService...
2019-12-22 14:21:28 1810
原创 系统调用001 API从三环进零环的过程
文章目录前言逆向分析ReadProcessMemoryNtReadVirtualMemory_KUSER_SHARED_DATASystemCall通过int 0x2E中断门进入零环通过sysenter快速调用进入零环总结总结前言在三环操作系统提供了各种API,这些API实际上只是一个暴露在三环的接口,真正的功能实现部分,最终都是要进到零环。逆向分析ReadProcessMemory###...
2019-12-21 17:43:34 1700 2
原创 [保护模式]PAE模式
文章目录PAE模式 2-9-9-12分页非PAE模式为什么是10-10-12PAE模式为什么是2-9-9-12总结PDPTE结构PTE结构PTE结构XD标志位(AMD中称为NX,即No Excetion)PAE模式 2-9-9-12分页非PAE模式为什么是10-10-12先确定了页的大小4K,所以后面12位的功能也就确定了。2的12次方为4096,也就是4KB。12位正好可以索引到每一个物...
2019-12-11 23:12:16 1383
原创 [保护模式]非PAE模式
文章目录PAE 物理地址扩展线性地址 有效地址 物理地址CR3PDE/PTE物理页的属性通过线性地址访问PDT和PTT指向PDT的线性地址 0xC0300000总结指向PTT的线性地址 0xC0000000/C0001000总结访问PDT与PTT公式总结PAE 物理地址扩展线性地址 有效地址 物理地址如下指令:mov eax,dword ptr ds:[0x12345678]这个地址如...
2019-12-09 22:30:52 533
原创 [保护模式]任务段
文章目录TSS什么是TSSTSS的作用如何找到TSSTR寄存器读写将TSS段描述符加载到TR寄存器构造TSS段描述符修改TSSJMP 访问代码段JMP 访问任务段JMP FAR和CALL FAR访问任务段的区别TSS切换实验示例代码构造段描述符填充CR3TSS什么是TSSTSS是一块内存,大小为104字节,结构如图所示:结构体如下:typedef struct TSS { DWORD...
2019-12-04 21:16:48 653
原创 [保护模式]中断门
文章目录要点回顾中断门IDT中断门描述符中断门实验示例代码构造中断门描述符修改IDT表中断现场中断返回为什么会PUSH EFLAGS寄存器调用门和中断门的区别要点回顾执行调用门的指令:call cs:eip。其中cs是段选择子,包含了查找GDT表的索引。但当CPU遇到了如下指令:int [index],查询的却是另外一张表,这张表叫IDT中断门IDTIDT表全称为中断描述符表,包含三种描...
2019-12-01 19:43:17 1382
原创 [保护模式]调用门
文章目录调用门调用门执行流程调用门描述符调用门实验无参调用门示例代码构造调用门修改GDT表执行流程中断现场有参调用门示例代码构造调用门修改GDT表中断现场总结调用门调用门执行流程CALL FAR的指令格式:CALL CS:EIP(EIP是废弃的)执行步骤:根据CS的值 查GDT表,找到对应的段描述符,这个描述符是一个调用门在调用门描述符中存储另一个代码段的段选择子选择子指向的段 段...
2019-12-01 16:24:42 1104
原创 [保护模式]段间跳转和跨段跳转
文章目录段间跳转段寄存器段间跳转段间跳转的执行流程1.段选择子拆分2.查表得到段描述符3.权限检查4.加载段描述符5.代码执行总结跨段跳转短调用长调用跨段不提权跨段提权总结段间跳转代码跨段,本质就是修改CS段寄存器段寄存器段寄存器有下面几个:ES CS SS DS FS GS LDTR TR。除了CS以外,其他的段寄存器都可以通过MOV LES LSS LDS LFS LGS指令进行修改。...
2019-12-01 13:38:20 1749
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人