一致代码段和非一致代码段

在看一致代码段和非一致代码段的时候,感觉不理解,所以自己动手做了下实验

非一致代码段

在我用3环的非一致代码段的时候,并且用jmp far 0x48:0x401930它是可以跳过去的,如图:

运行前

 

 运行后

 

 可以发现cs从1b变成了4b,就是说rpl为3,在看看段描述符dpl也是3

接下来我们把dpl变成0试试

运行前

 

 运行后

 

 

 od直接报错了,也就是说我们直接用3环程序去访问0环的非一致代码段,是不被允许的,如果需要访问需要用调用门(想用0环程序去访问3环的程序,可是自己注册驱动有点麻烦,在网上找一个好点的驱动注册机,也没找到,希望有大佬能推荐一个)

一致代码段

首先我们来看3环的一致代码段

 运行前

 运行后

 可以看到cs从1b变成了4b

再来看看0环的一致代码段

 运行前

 运行后

 可以发现这里的cs也变了

总结

由此我们可以看出在cpl为3的情况下,一致代码段是0环程序和3环程序都可以执行的,而非一致代码段是只有3环可以跳的(0环可不可以跳  我还不知道  还得亲自做实验才行,得通过写驱动来完成,所以我得先去找一个快速注册驱动的程序,不然手动注册感觉麻烦)

再放上我在网上找到一些资料

原文地址:https://www.cnblogs.com/pppyyyzzz/p/13732331.html