段寄存器属性的探测

在之前段寄存器随笔中说了一下段寄存器是用来保护内存中的数据不被随意访问(当然还有页),那如何限制你的呢

首先要了解段寄存器的结构

  段寄存器的结构长度是96位,可以显示的只是16位的selecter(段选择子),剩余部分不可见,(但是可以探测到的)

在段寄存器中有个attribute属性,它会限制你能不能写,这是第一关

 

段寄存器属性的探测

 

2.探测可见部分:段选择子

  在这里可以看到很多个段寄存器,比如cs,在cs后的就是段选择子,在后面32bit代表是个大段(后面会讲),在后面的0是base,FFFFFFFF是limit,

找段寄存器其他位 就是需要同感段选择子找的,

 

 段寄存器属性的探测

3.段寄存器成员介绍

 

 

 段寄存器属性的探测

GS:32系统中没用使用,

FS:跟线程相关的

3.1段寄存器中的选择子是可以改变的,来探测属性

段寄存器属性的探测

 

 如图改变后不可写了,但是由此可以知道它是有权限限制的,attribute是存在的

段寄存器属性的探测

 

 探测base 注意:这里的是使用的寄存器是gs,gs如果是单步调试的话会进R0,进R0gs就清0了

段寄存器属性的探测

 

 探测limit 

上一篇:HTML全局属性(global attribute)有哪些


下一篇:tensorflow2 运行时报错 AttributeError: ‘list‘ object has no attribute ‘_in_graph_mode‘