流沙团
回复qqq:补充一点 如果NT位为0,使用iret时返回值从堆栈中获取  ....中断返回 如果NT位值为1 ,使用iret (不是中断返回)  而是从Previous Task Link 前一个TSS段选择子找到TSS找到各个寄存器的值返回 不要调试单步执行,会进0环把NT位清零,再使用iretd 因为NT位被置0 从堆栈返回,不会取出前一个TSS里的值 直接蓝屏...坑 使用jmp指令访问任务段: jmp 0x48:0x123456 如果0x48是TSS段描述符,先修改TR寄存器,再用TR.Base指向的TSS中的值修改当前的寄存器. CALL 0x48:0x12345678 使用 JMP 和CALL的区别 使用CALL 会储存上一个TSS段选择子到Previous Task Link 使用JMP这个值不变 如果用JMP访问TSS段描述符 EFLAGS寄存器的NT位值不变 如果用CALL访问TSS ,EFLAGS寄存器的NT位会被置1
昵称

邮件地址 (选填)

个人主页 (选填)

内容