典型Linux操作系统结构图、IO调度器在内核栈中的位置图
分类:
系统相关 时间:
2019-03-01 17:05:46
阅读次数:
206
一、准备 由于内核栈不可执行(NX),栈溢出利用需用到ROP。简单回顾一下ARM ROP。 漏洞演示代码如下,网上随便找了个。 vulnerable_function函数使用read从标准输入读数据到buf缓冲区,未校验拷贝长度导致栈溢出。分析其汇编代码: 首先LR,R11寄存器压栈,接着分配0x8 ...
分类:
移动开发 时间:
2018-10-28 00:48:41
阅读次数:
248
整理一些杂乱的内容。以下x86架构。 Linux 内核栈大小 内核栈大小是固定的,默认为8k,曾经有选项可以设置为4k栈。由于大小固定,申请过大的栈内存,或者函数调用层次过深,都可能导致栈溢出。 关注默认4k还是8k栈,社区曾有过长时间讨论。 其中8k栈的缺点如下: 浪费内存。 由于内核4k分页,要 ...
分类:
系统相关 时间:
2018-10-28 00:48:31
阅读次数:
547
1. 内存管理 自上而下 分别是 操作系统内核 栈 (自上而下) 自由区 堆(自下而上) 数据段 代码段 2. 编译器优化 编译器会把同类型的变量 放在一片连续的区域管理 (如main函数里面有3个int 类型变量,则这三个int类型变量在一起) 64位操作系统下 指针占8个字节 ...
分类:
系统相关 时间:
2018-10-07 23:20:25
阅读次数:
212
中断很久,一看发现又多了一些内容。 打算完成了 Lab1 challenge 1 中断像量表设置的时候我们需要设置一个用于系统调用的 trap门 也就是 利用中断切换特权级 To kernel 调用 Tokernel 的时候由于由特权及的转换,所以这里会在 Tss 中取出当前函数的内核栈 并且做相应 ...
分类:
其他好文 时间:
2018-10-04 16:36:23
阅读次数:
170
1.什么是进程的内核栈? 在内核态(比如应用进程执行系统调用)时,进程运行需要自己的堆栈信息(不是原用户空间中的栈),而是使用内核空间中的栈,这个栈就是进程的内核栈 2.进程的内核栈在计算机中是如何描述的? linux中进程使用task_struct数据结构描述,其中有一个stack指针 task_ ...
分类:
系统相关 时间:
2018-08-30 11:02:24
阅读次数:
221
1.操作系统是怎么组织进程的 struct task_struct { ...... /* 进程状态 */ volatile long state; /* 指向内核栈 */ void *stack; /* 用于加入进程链表 */ struct list_head tasks; ...... /* 指 ...
分类:
系统相关 时间:
2018-04-30 18:09:51
阅读次数:
270
Q:怎么从用户态切换到内核态 A:用户程序调用系统调用的时候,用户程序先将系统调用号放入eax,执行int0x80指令触发中断,中断发生时,cpu切入内核态,从 用户栈 切换到 内核栈 ,在 内核栈 中依次压入用户态的寄存器,也就是保护现场,根据中断号在中断向量表中查找对应的中断处理程序,并调用它。 ...
分类:
其他好文 时间:
2018-03-21 13:52:46
阅读次数:
172
转自:http://linuxperf.com/?p=116 在Linux系统上,进程运行分为用户态与内核态,进入内核态之后使用的是内核栈,作为基本的安全机制,用户程序不能直接访问内核栈,所以尽管内核栈属于进程的地址空间,但与用户栈是分开的。Linux的内核栈大小是固定的,从2.6.32-520开始 ...
分类:
其他好文 时间:
2018-03-14 12:44:54
阅读次数:
270
1. Linux中进程空间的分配情况如下: 从上图可以看出,进程的空间分配:与进程相关的数据结构(页表、内核栈、task) > 物理内存 > 内核代码和数据 > 用户栈 > 共享库的内存映射区 > 运行时堆 >未初始化数据段.bss > 已初始化数据段.data > 代码段.text 2. 进程的堆 ...
分类:
系统相关 时间:
2018-02-15 12:46:03
阅读次数:
365