吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 969|回复: 0
收起左侧

[讨论] TSS内存块

[复制链接]
xshacry 发表于 2020-6-4 18:48
这是我认为的TSS内存块,但我不知道这样认为对不对,所以希望有人一起讨论,或告诉我错在哪里?
英特尔的思想是:
                每个任务都有一个TSS内存块和一个TSS段描述符。
                任务切换时,将原来任务的寄存器都保存在原来TSS段描述符对应的TSS内存块中,然后将目标任务的TSS段描述符加载到TR寄存器中。使用jmp或call就能够全部切换。
                提权时,调用门中断门等门进行提权,其中提权后的cs和eip由门中代码段描述符和门中偏移给出。ss和esp则由此时TR指向的TSS内存段给出。
                随着任务切换,TR永远指向当前任务的TSS内存段。
windows的思想是:
                认为英特尔设计的线程切换不好,费时间。所以windows直接用栈来替换所有寄存器。
                但在提权中,因为英特尔设计的CPU必须用到TSS才能提权。所以没办法windows只能用TSS内存段。但它和英特尔思想不同的是,TR永远指向同一块内存,也就是TR的值永远不会变。但是TR的值不变,我不同线程提权进0环怎么办呢。所以每次切换线程时,windows都将线程结构体中保存的esp0和ss0放到TR指向的TSS内存块中。这样,我就能保证不同线程提权时,都指向当前线程的esp0和ss0.

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-15 20:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表