本节主要内容是通过分析题目中的so文件加密,去写出反解脚本计算flag
传统的分段模型:未开启分页机制
协同式任务切换不一定要通过一个专门的接口例程进行,也可以用一般的例程进行。
多任务系统中,每个任务都有自己的任务状态段TSS和局部描述符表LDT,当前任务是由任务寄存器TR指示,指向当前任务的任务状态段TSS、局部描述符表寄存器LDTR也指向当前局部描述符表LDT。
用描述符实施段与段之间的隔离和保护,建立在程序之间分工协作的基础上,首先用户程序需要在内核的支持下运行而不能独立运行。
内核需要加载和重定位用户程序,为用户程序每个段创建描述符,将段选择子回填到用户程序的头部中,因为这个原因用户程序只能访问自己的代码段、数据段和栈段。
内核时对整个计算机系统进行管理,管理软件和硬件。内核可以加载用户程序,对用户程序进行重定位,用户程序终止后还可以回收用户程序的资源,在编程时位用户程序提供API。
从内核进入用户程序时,使用的是call far指令,这是一个过程调用指令,是需要使用retf指令返回的。过程调用需要隐式的栈操作,使用栈来保存返回地址,因此当call far指令执行时需要将下一条指令的地址压入当前正在使用的栈中保存,也就是内核的栈中。
引入保护模式、描述符、描述符表等并没有对用户程序的编写增加什么负担
这两条指令计算GDT的逻辑段地址,使用64位除法指令: eax(商)保存段地址, edx(余数)保存偏移div r/m32
div r/m32
保护模式是要保护什么