摘要:
正如大家所知道的,全局变量是放在全局内存中的,但反过来却未必成立。用static修饰的局部变量就是放在放全局内存的,它的作用域是局部的,但生命期是全局的。在有的嵌入式平台中,堆实际上就是一个全局变量,它占用相当大的一块内存,在运行时,把这块内存进行二次分配。这里我们并不强调全局变量和全局内存的差别。... 阅读全文
随笔档案-2014年10月
位址空间配置随机加载2014-10-12
2014-10-12 15:54 by 想打架的蜜蜂, 223 阅读, 收藏,
摘要:
位址空间配置随机加载在计算机科学中,位址空间配置随机加载(英语:Address space layout randomization (ASLR)),又称为位址空间布局随机化,是指利用随机方式配置资料位址。一般现代操作系统中都加设这一机制,以防范恶意程式对已知位址进行攻击。作用位址空间配置随机加载利... 阅读全文
堆栈 2014-10-12
2014-10-12 15:41 by 想打架的蜜蜂, 150 阅读, 收藏,
摘要:
堆栈(英语:stack),也可直接称栈。台湾作堆栈,在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指标,英语:top)进行加入资料(英语:push)和输出资料(英语:pop)的运算。另外堆栈也可以用一维阵列或连结串行的形式来完成。堆栈的另... 阅读全文
Return-to-libc 攻击2014-10-12
2014-10-12 15:24 by 想打架的蜜蜂, 467 阅读, 收藏,
摘要:
return-to-libc 攻击是一种电脑安全攻击。这种攻击方式一般应用于缓冲区溢出中,其堆栈中的返回地址被替换为另一条指令的地址,并且堆栈的一部分被覆盖以提供其参数。这允许攻击者调用现有函数而无需注入恶意代码到程序中。 名叫libc的共享库提供了类UNIX操作系统中的C运行时支持。尽管攻击者可以... 阅读全文
堆栈溢出-2014-10-12
2014-10-12 15:23 by 想打架的蜜蜂, 186 阅读, 收藏,
摘要:
堆栈溢出(英语:stack overflow)在计算机科学中是指使用过多的存储器时导致调用堆栈产生的溢出[1]。堆栈溢出的产生是由于过多的函数调用,导致调用堆栈无法容纳这些调用的返回地址,一般在递归中产生。堆栈溢出很可能由无限递归(Infinite recursion)产生,但也可能仅仅是过多的堆栈... 阅读全文
缓冲区溢出2014-10-12
2014-10-12 14:29 by 想打架的蜜蜂, 167 阅读, 收藏,
摘要:
缓冲区溢出(buffer overflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据)从而破坏程序运行并取得程序乃至系统的控制权。缓冲区溢出原指当某个数据超过了处理程序限制的范围时,程序出现的异常操作。造成此现象的原因有:存在缺陷的程序设计。... 阅读全文
C++学习笔记 2014-10-11
2014-10-11 20:06 by 想打架的蜜蜂, 159 阅读, 收藏,
摘要:
1、编译器编译源代码后生成的文件叫做目标文件,目标文件从结构上讲,他是已经编译后的可执行文件格式,只是还没链接,有些符号和地址还没有做出调整,他也是按照可执行文件格式存储的。2、目标文件的格式:可执行文件格式,在Windows下是PE和Linux下的ELF,他们都是COFF格式的变种。目标文件就是源... 阅读全文
程序员的自我修养—2014-10-10
2014-10-10 12:53 by 想打架的蜜蜂, 140 阅读, 收藏,
摘要:
1、被隐藏了的过程:LInux下,用命令gcc编译c源程序,有四个步骤:预处理、编译、汇编、链接首先是源文件hello.c和相关的头文件,如stdio.h等被预编译器cpp预编译成一个.i文件。对于c++程序员来说,他的源代码文件的扩展名可能是.cpp或者.cxx,头文件的扩展名可能是.hpp。而预... 阅读全文
程序员的自我修养—2014-10-9
2014-10-09 22:57 by 想打架的蜜蜂, 189 阅读, 收藏,
摘要:
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决1、每个层次之间都需要相互通信,既然需要通信就必须有一个通信的协议,我们将其称为接口,接口的下面那层是接口的提供者,由它定义接口,接口的上面那层是接口的使用者,他使用该接口来实现所需要的功能。每个层都是对他下面的那层的包装和扩展2、位于上面... 阅读全文
C++学习笔记 2014-10-8
2014-10-08 23:05 by 想打架的蜜蜂, 133 阅读, 收藏,
摘要:
1、break语句可以用于退出一个循环,执行break语句之后,循环语句立即终止,并继续执行循环语句之后的语句,break语句可用于任何形式的循环中,包括while、do-while或者for循环。break语句只终止了他的内层的循环。如果在一个循环中嵌套另一个循环,而且在内层循环中使用了一个bre... 阅读全文