1、链接器脚本的神奇作用 通过使用不同的链接器脚本,不需要更改源代码,就可以实现不同的功能! 链接器脚本对程序的生成有着至关重要的作用! 2、链接器脚本 >段 一个可执行程序通常是由:代码段,数据段,bss段构成的。 同样,在用于链接这个程序的链接器脚本中,就会反映出这几个段的信息。 段的信息是由S ...
分类:
其他好文 时间:
2016-05-20 19:03:19
阅读次数:
173
和上一个一样,记录一下做题的思路。 程序一开头就是这个,往bss段里写,因为ZCTF有一道题就是利用的这个地方,所以我留意了一下这个地方。 又是熟悉的菜单,又是熟悉的笔记本功能。 一猜又是堆的问题 ...
分类:
其他好文 时间:
2016-05-19 00:09:36
阅读次数:
328
主要描述三方面的内容:第一是汇编语言的程序模版,以及模版涉及到的一些知识点;第二是如何调试汇编语言;第三是如何在汇编语言中调用C库函数。
1. 汇编语言的组成
汇编语言由段(section)组成,一个程序中执行的代码,叫文本段(text),程序还可能有定义变量,有付给初始值的变量放在数据段(data)中,没有赋初值或者付给零初值的放在bss段中。text段一定是要有的,data和bss可以没有...
分类:
编程语言 时间:
2016-05-12 20:17:28
阅读次数:
249
一、内存简单介绍 内存结构 1、运行时分配 (1)栈:用户存放程序临时创建的局部变量(先进后出)。 (2)堆:动态分配内存段。 2、编译器分配 (1)BSS段:存放未初始化的全局变量和静态变量。 (2)数据段:已初始化的全局变量和静态变量。 (3)代码段:执行代码的一块区域。 地址由低到高:代码段 ...
分类:
其他好文 时间:
2016-04-30 12:44:14
阅读次数:
217
对于可执行文件,它包含了许多的段,例如(数据段,文本段,BSS段等),它们是二进制文件中简单的区域,里面保存了和某种特定类型(如符号表条目)相关的所有信息。
对于一个源文件,哪些地方会放到哪个段,如下图:
可得知,程序代码是存放在文本段,初始化的全局变量和静态变量是存放到数据段中的,而没有初始化的全局变量和静态变量则是存放到BBS,运行时所需要的BSS段的大小记录在目标文件中,但BSS段并...
分类:
其他好文 时间:
2016-04-29 15:06:38
阅读次数:
126
一般C语言编译后的执行语句都编译成及其代码,保存在.text段;已初始化的全局变量和局部静态变量都保存在.data段;未初始化的全局变量和局部静态变量一般放在.bss段里。我们知道未初始化的全局变量和局部静态变量默认都是0,本来他们可以存放在.data段中,但它们的值都为0,放..
分类:
其他好文 时间:
2016-04-27 07:10:23
阅读次数:
147
1.未初始化的全局变量(.bss段) bss段用来存放 没有被初始化 和 已经被初始化为0 的全局变量。如下例代码: 编译并查看: 全局变量bss_array的大小为4MB = 1024*1024*sizeof(int) Byte = 4194304 Byte。 通过size 查看可知数据被存在了 ...
分类:
其他好文 时间:
2016-04-24 20:06:35
阅读次数:
543
现在把esp、GDT等内容放进内核中,我们现在可以用C语言了,只要能用C,我们就避免用汇编。 下面看切换堆栈和GDT的关键代码: 最后这4个语句完成了切换堆栈和更换GDT的任务。StackTop定义在.bss段中,堆栈大小为2KB。 函数首先把位于Loader中的原GDT全部复制给新的GDT,然后把 ...
分类:
系统相关 时间:
2016-04-20 19:39:36
阅读次数:
267
认识C和内存管理 C程序内存空间分为下面5类: stack栈: 存放着局部变量和函数参数等数据,向下生长 (可读可写可执行) heap堆: 给动态分配内存使用,向上生长 (可读可写可执行) bss segment:BSS段 用来存放未初始化的全局变量、未初始化的静态变量 和 这两种变量初始化值为0的 ...
分类:
其他好文 时间:
2016-04-18 11:45:53
阅读次数:
112
最近研究代码质量检测问题,在网上找的相关资料咱是如下: 一. 一些相关概念 很多人应该比较了解这块内容了...可以权当复习复习... 1.内存空间的划分: 我们知道,一个进程占用的内存空间,包含5种不同的数据区:(1)BSS段:通常是存放未初始化的全局变量;(2)数据段:通常是存放已初始化的全局变量 ...
分类:
移动开发 时间:
2016-04-12 19:16:54
阅读次数:
297