如何对程序的栈进行保护————x86_64

原创 2015年07月10日 09:04:18

如何对程序栈进行保护,当要控制程序执行过程,需要先保护栈。然后执行要执行的代码,最后恢复栈


保护基本方法为:

pushq %rsp
pushq (%rsp)
andq $-0x10, %rsp

执行要执行的代码

movl 8(%rsp), %rsp



GCC中的堆栈保护机制

1.1 编译选项为 gcc -fstack-protector-all main.c #include int main(void) { int i; /* 此时i的声明在数组a之前 */ ...
  • u012796139
  • u012796139
  • 2015年06月25日 13:47
  • 2462

内核栈溢出保护

linux内核中有个编译选项CC_STACKPROTECTOR用来开启GCC的stack-protector功能, 这个功能是在GCC4.1版本中引入,用来检测栈是否遭到溢出攻击。 目前我们用的版...
  • u014089131
  • u014089131
  • 2017年04月28日 14:37
  • 600

GCC 中的编译器堆栈保护技术

以堆栈溢出为代表的缓冲区溢出已成为最为普遍的安全漏洞。由此引发的安全问题比比皆是。早在 1988 年,美国康奈尔大学的计算机科学系研究生莫里斯 (Morris) 利用 UNIX fingered 程序...
  • yuanbinquan
  • yuanbinquan
  • 2016年06月28日 19:42
  • 2607

linux内核堆栈保护浅析

一 启用方式 打开配置CONFIG_CC_STACKPROTECTOR,重新编译内核即可。 二 工作原理 搜索配置CONFIG_CC_STACKPROTECTOR产生的影响,可得到如下结果: 1....
  • whuzm08
  • whuzm08
  • 2017年05月25日 18:31
  • 529

双进程保护及实现

考前2个星期都一直在搞这个,然后考试周考的死去活来,全部忘光了。最近瞅了一下,发现远远没我想象的那么简单,双进程保护如果用的好的话,SMC+调试进程与被调试进程处理不同异常,的确能在很大程度上限制动态...
  • Nightsay
  • Nightsay
  • 2015年03月24日 15:26
  • 858

深刻理解linux内核调用栈、栈帧结构

我们知道,栈溢出通常是因为递归调用层次太深导致,那么为什么递归调用层次太深回导致栈溢出呢,解决这个问题 之前我们先看一下与函数调用有关的栈的基本概念: 1. 每一个线程拥有一个调用栈结构(...
  • koozxcv
  • koozxcv
  • 2015年11月23日 17:15
  • 1307

按升序对栈进行排序

题目:编写程序,按升序对栈进行排序(即最大元素位于栈顶)。最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构(如数组)。     思路:假设数据保存在原栈s1中,另设辅助栈s2。数据...
  • moses1213
  • moses1213
  • 2016年07月21日 16:55
  • 1700

与堆栈保护有关的编译选项

GCC4.1中有三个与堆栈保护有关的编译选项: -fstack-protector:启用堆栈保护,不过只为局部变量中含有char数组的函数插入保护代码; -fstack-protector-all...
  • LIUXINKUN
  • LIUXINKUN
  • 2014年07月24日 15:45
  • 1043

[FAQ14383]如何在内核打开栈保护功能?

[DESCRIPTION] 内存踩坏一般都很难排查问题,需要借助各种调试方法找出问题点。不同的内存踩坏有不同的调试方法,这里介绍下内存踩坏中的一种:栈帧溢出。 栈帧溢出是指:在某个函数内踩...
  • u011677209
  • u011677209
  • 2016年10月14日 16:54
  • 329

x86-64栈帧布局分布

摘自:http://eli.thegreenplace.net/2011/09/06/stack-frame-layout-on-x86-64A few months ago I’ve written...
  • chinaclock
  • chinaclock
  • 2015年12月16日 21:06
  • 1246
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何对程序的栈进行保护————x86_64
举报原因:
原因补充:

(最多只允许输入30个字)