抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

数据段代码段的权限规则

  1. 段的权限规则 代码段、数据段、堆栈段;
  2. 跨段跳转不提权 写法 jmp call;

裸函数知识点

  • 关闭增量链接;
  • 关闭随机基址;

代码实验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 裸函数 不生成多余汇编代码
void __declspec(naked) test()
{
__asm
{
ret ;// 不加ret会导致程序报错
}
}

int main()
{
test();

system("pause");
return 0;
}

数据段代码段的权限规则知识点

  • DPL: Descriptor privilege level;
  • CPL: Current privilege level(CS段描述符的DPL);
  • RPL: Request privilege level;

普通的数据段(DS、ES)下RPL可以乱给的;
在堆栈段(SS)下是有用的, RPL == CPL == DPL才能更改;
在代码段(DS)上是没用的, CPL == DPL能更改, RPL系统会改回去;

代码实验

1
2


跨段不提权跳转会将ESP和CS压到堆栈中, 所以会是ESP-8;
使用retf;

评论