10-10-12分页
保护模式下内存管理方式分为两种,段与页。前面的篇章中,简要介绍了段的知识,今天就来和大家聊聊页的知识,页是保护模式中更为重要的一环,随着系统进入32-Bit,段的作用明显降低了,取而代之的则是在段的基础上,更为细分的页。
段与页
这是Intel白皮书中介绍关于段与页的概要图,经过段的学习,可以很容 ...
任务门
为何使用任务门之前任务段中提到,进行任何切换时可以还可以使用任务门。那么既然存在TSS段描述符了,为何还需要任务门呢?
简要概括,任务门有如下优势:
任务门可以放在GDT表中,也可以放在IDT表中,还能放在当前线程的LDT表中,而TSS段描述符只能在GDT表中
任务门可以让低权限的线程进行任何切换 ...
任务段
要点回顾在调用门、中断门与陷阱门中,一旦发生权限切换,那么就必有堆栈的切换。而且,由于CS的CPL发生改变,也导致了SS也必须要切换。这时问题来了,我们知道EIP和CS的值都可以通过门描述符获得,那么ESP和SS是哪来的?这就是引出了今天的内容:TSS(Task-state segment),任务状 ...
陷阱门
这一篇来说陷阱门,陷阱门这东西,就没什么好讲的,应该Windows几乎没怎么用,陷阱门也是位于IDT表里的,列出前48个描述符,就没有陷阱门。。。
陷阱门描述符
看图,陷阱门描述符,和中断门描述符,就1个位不一样,中断门的Type域是1110,陷阱门是1111
代码实现代码实现也和中断门的完全一样 ...
中断门
上一篇提到过,Windows是不使用调用门的,所以在GDT表里没有找到调用门,那么Windows如何实现代码跨段,提权等行为呢?这里用的较多的是中断门,接下来就来介绍一下中断门。
IDT表与GDT的区别首先要提到IDT表(中断描述符表),在上一篇提到的调用门的门描述符,都在GDT表里,而中断门的门描 ...
调用门
前一篇中提到CALL FAR指令最终跳转的地址是调用门里,今天就要分析一下调用门。首先从调用门的执行流程开始
调用门执行流程指令格式:CALL CS:EIP(EIP是废弃的)
执行步骤:
根据CS的值查GDT表,找到对应的段描述符,这个描述符是一个调用门。
在调用门描述符中存储另一个代码段的选择 ...
长调用与短调用
在上一篇章中提过,实现跨段的跳转,可以使用JMP FAR指令,但是想要实现跨段的调用,就需要学习一个新的指令CALL FAR;CALL FAR指令要更为复杂一些,原因是JMP指令是不影响堆栈的,而CALL指令会影响堆栈。
短调用首先来回顾下短调用,短调用其实就是普通的CALL调用,是相对于CALL ...
代码跨段跳转(不提权)
之前的篇章中提到过,除了CS段寄存器外,均可使用MOV或LES,LSS,LDS,LFS,LGS指令进行修改;为什么CS不可以直接被修改呢?
CS是代码段的段寄存器,CS的改变意味着EIP的改变,所以无法使用上述指令进行修改
代码跳转指令代码的跳转指令分为2种,一种是同时修改CS和EIP的指令,另一种 ...
一次简单的Hook(下)
前一篇已经完成了对GetMsgAbstract函数的分析,发现,当执行到GetMsgAbstactByElement这一步时,已经可以根据寄存器用来传递的参数获取聊天内容,这篇来根据分析的内容编写用来Hook的dll。
Inline Hook这里先对Inline Hook做个简要概述,它是一种通过修 ...
第一周
今天是开博客的第七天,说满意其实也不是很满意,进度还是很慢的,当然计划也是长远的。一个是希望能坚持下来,也很久没坚持做一件事了;另一个是希望能够在4个月左右的时间,将所涉及的三个领域的基础知识,真正的掌握了,希望自己能真正尽力。