啥也不会还想学PWN

今天继续,Linux的基础知识。

在Linux系统中,保护层级有四层:ring0~ring3.

一般来说,用到的只有ring0和ring3这两个。其中,0为内核部分,3位用户部分。

权限:一般来说,权限有3个:可读可写可执行。

读-R,写-W,执行-X。

例如:赋予一个可执行文件的执行权限:chmod+Xfilename。

物理地址和虚拟地址:物理内存就是现实的计算机中的内存,而虚拟内存是物理内存经过MMU转换之后形成的内存空间。虚拟内存要比物理内存大得多。

栈:(再重复一遍吧)这是一种特殊的数据结构,只允许一头操作。它有两种操作,压栈和弹栈,对应汇编指令push和pop。

Linux系统中,系统为每一个进程都安排了一个栈,进程中每一个调用函数都有一段独立的栈帧(理解为一段栈空间,由rsp指针和rbp指针确定。)

而且,栈,是由高地址向低地址生长的,简单来说就是高地址在栈底,低地址在栈顶。

函数调用流程:

调用函数:只需要将rip压栈,即push rip,然后将rip赋值为被调用函数的起始地址,实际上这一操作被隐形的内置在call指令当中。

被调用函数:push rbp ;move rbp,rsp;sub rsp 0xxxx。即保存调用函数的rbp指针,将自己的rbp指针指向栈顶,然后开辟栈空间给自己,此时rbp指针就变成了被调用函数的栈底。

函数返回:leave;ret。翻译过来就是:move rsp,rbp;pop rbp;pop rip;即恢复栈帧,返回调用函数的返回地址。

好了,以上就是Linux的基础知识了,明天收尾Linux,学习Linux的延迟绑定机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值