通过递归来实现算法往往比基于循环的实现来得更加清晰,但递归的实现会因为每次方法调用的时候都需要分配和管理栈帧而导致额外的开销,这会导致递归的实现很慢而且有可能很快就耗尽了栈空间(也就是栈溢出)。 为了避免栈溢出,一个推荐的做法是把程序重写成尾递归的形式来利用一些编译器的尾递归优化的功能来避免溢出。 ...
分类:
编程语言 时间:
2016-05-30 14:17:11
阅读次数:
245
在C++的发展过程中,为了实际的需要,引入了异常处理机制。程序中常见的错误:语法错误和运行错误,语法错误一般都是在编译时候发现的,编译器基本上都会报出错误的具体位置,因此这类错误一般都是比较好修改,运行错误一般不容易进行调试,比如说,程序崩溃(一般是由于栈溢出..
分类:
编程语言 时间:
2016-05-24 10:31:48
阅读次数:
205
一、系统栈的工作原理进程所使用的内存按照功能可以划分为一下4部分:1.代码区:代码区用于存放待执行的二进制指令。处理器会到代码区取指令并执行。2.数据区:用于存储全局变量。3.堆区:堆区为进程分配动态申请的内存,进程在使用之后需要归还。动态分配和回收是堆区的特点。4.栈..
分类:
其他好文 时间:
2016-05-22 06:26:41
阅读次数:
234
重点知识Engadget(瘾科技)StackOverFlow(栈溢出)Code4Apprespon魏先宇的程序人生第一周快捷键: Alt+上方向键 跳到最上面 Alt+下方向键 跳到最下面 Alt+左方向键 跳到最左面 Alt+右方向键 跳到最右面 Alt+shift+方向键 可以批量复制内容,在按 ...
分类:
编程语言 时间:
2016-05-19 13:12:14
阅读次数:
927
Linux堆内存管理深入分析(上半部) 作者:走位@阿里聚安全 0 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘、利用的分析文章层出不穷。从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏洞利用两种。国内关于栈溢出的资料相对较多,这里就不累述了,但是关于堆溢出的漏洞利用资料就很少了。鄙人以为主 ...
分类:
系统相关 时间:
2016-05-13 10:35:50
阅读次数:
205
系统蓝屏,很大原因都是系统自身代码有缺陷引起的,而系统代码缺陷很大程度上与内存分配不当有关。由于内存分配不当引起的堆栈溢出、缓冲区溢出等问题,常常会导致系统瘫痪甚至崩溃,所以理解内存分配对于一名合格的程序媛而言非常有必要。内存分配的形式
内存泄露
缓冲区溢出
内存分配的形式一个由C/C++编译的程序所占用的系统内存一般分为以下几个部分的内容:
(1)有符号起始的区块(Block Started b...
分类:
编程语言 时间:
2016-05-12 17:12:27
阅读次数:
171
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5266 题目就是让你求LCA,模版题。注意dfs会栈溢出,所以要扩栈,或者用bfs写。 ...
分类:
其他好文 时间:
2016-05-11 16:37:18
阅读次数:
130
因为最近要去做ctf比赛的这一块所以就针对性的分析一下近些年的各大比赛的PWN题目。主防项目目前先搁置起来了,等比赛打完再去搞吧。 这次分析的是去年的SCTF的赛题,是我的学长们出的题,个人感觉还是很符合套路的:一道栈溢出、一道格式化字符串、一道堆溢出。 pwn200 一个栈溢出。 题目给出了lib ...
分类:
其他好文 时间:
2016-05-11 06:37:58
阅读次数:
218
实验原本是模拟一个密码验证程序,其代码如下: 其中verify_password代码如下: 用红框圈起来的地方发现有一个缓冲区漏洞,我们就利用这里进行栈溢出操作。我们这里只是尝试着弹出一个calc.exe。 先构造汇编代码,这里是先利用LoadLibrary加载msvcrt.dll,在利用syste ...
分类:
其他好文 时间:
2016-05-11 01:23:56
阅读次数:
265
从内存的角度看栈和堆! 我们介绍了函数的基本概念,在最后我们提到了一个系统异常java.lang.StackOverflowError,栈溢出错误,要理解这个错误,我们需要理解函数调用的实现机制。本节就从概念模型的角度谈谈它的基本原理。 我们之前谈过程序执行的基本原理:CPU有一个指令指示器,指向下 ...
分类:
其他好文 时间:
2016-05-09 20:18:54
阅读次数:
279