The invention discloses a method and device for managing memory bounds, this method, during program initialization, set the memory pool in the heap memory, the memory pool is divided into several memory specifications, each memory area includes at least one memory block, and in between every two adjacent memory block is provided with a belt; in the running process, the memory allocation of predefined functions, dynamic memory will need to apply for the program, the free memory block matching to the corresponding memory specification in the memory pool in. Thus, by setting up an isolation band, the risk of other memory blocks resulting from cross boundary access can be effectively reduced.
【技术实现步骤摘要】
一种内存越界的管理方法及装置
本专利技术涉及软件安全领域,尤其涉及一种内存越界的管理方法及装置。
技术介绍
在C程序中,内存越界访问是一个普遍问题,从C程序运行的角度来看,内存被分为静态内存区、栈内存区以及堆内存区。静态内存区主要存放程序的静态信息,包括全局变量、静态变量等;栈内存区属于动态内存,主要存放一些临时变量等;堆内存区也属于动态内存,需要显式调用系统的分配函数获取。其中静态内存和栈内存程序是不能控制的,由操作系统来分配管理;堆内存程序可以控制,可以根据自己的需要进行动态分配和释放。每种内存区都可能会存在越界访问的问题,其中数组越界写操作是引起内存越界的主要原因,并且多数疑难、怪异问题都恰恰是这种原因引起的。比如说,某个数组越界修改了其他模块使用的变量的值,结果使得其他模块进入了一些不应进入的流程,导致了一些奇怪的现象和问题,而这些问题分析起来往往无从下手,这对设备的可用性、稳定性带来极大的威胁。但是,目前,对于静态内存区及栈内存区的越界访问并没有一个好的方法。现有技术中,对内存越界的管理方法,一般都是采用静态检查工具对代码进行扫描,进而发现一些可疑的越界操作代码,但这种检查工具作用很有限,只能发现一些很明显的问题,绝大多数的问题都没有办法检查出来。现有技术中,另外一种方法是,当程序运行出现问题后,根据程序产生的core文件,结合出现问题的现象,进行代码走读、分析和定位。由此可见,根据core文件以及现象进行内存越界管理的方法,存在以下问题:(1)程序已经崩溃,已经带来了损失;(2)用于分析的信息大多情况下并不充分,因为,一些情况下,用于保存调用栈 ...
【技术保护点】
一种内存越界的管理方法,其特征在于,包括:在程序初始化时,在堆内存中设置内存池,所述内存池被划分为多种规格的若干内存区,每一个内存区中包括至少一个内存块,且在每两个相邻内存块之间设置有隔离带;在程序运行过程中,通过预定义的内存分配函数,将程序中需要申请的动态内存,在内存池中匹配至相应内存规格的空闲内存块中。
【技术特征摘要】
1.一种内存越界的管理方法,其特征在于,包括:在程序初始化时,在堆内存中设置内存池,所述内存池被划分为多种规格的若干内存区,每一个内存区中包括至少一个内存块,且在每两个相邻内存块之间设置有隔离带;在程序运行过程中,通过预定义的内存分配函数,将程序中需要申请的动态内存,在内存池中匹配至相应内存规格的空闲内存块中。2.如权利要求1所述的方法,其特征在于,在堆内存中设置内存池之前,进一步包括:将当前的待处理程序中的全局变量封装成至少一个结构体,且基于所述至少一个结构体中的每一个结构体分别定义相应的结构体指针。3.如权利要求2所述的方法,其特征在于,将当前的待处理程序中的全局变量封装成至少一个结构体,具体包括:将当前的待处理程序中的所有全局变量封装成一个结构体;或,分别将当前的待处理程序中的每一个功能模块包含的全局变量,封装成对应的结构体;或对当前的待处理程序中中的各个模块进行任意组合,分别将每一种组合包含的全局变量,封装成对应的结构体。4.如权利要求1所述的方法,其特征在于,进一步包括:分别设置每一个隔离带的大小,并在所述每一个隔离带中分别写入预设的数据。5.如权利要求4所述的方法,其特征在于,所述每一个隔离带的大小是相同的。6.如权利要求4或5所述的方法,其特征在于,进一步包括:在内存池的起始位置设置一个内存池管理区;分别对所述每一个隔离带中的数据进行定时监测,并在确定任意一个隔离带中的数据发生变化后,上报越界信息;其中,所述越界信息包括,内存池管理区中的管理信息及发生数据变化的隔离带的地址信息,其中,所述管理信息是发生数据变化的隔离带的相邻内存块的描述信息。7.如权利要求6所述的方法,其特征在于,所述发生数据变化的隔离带的相邻内存块的描述信息中至少包括使用所述相邻内存块的参量在相应程序中的行号和对应的函数名。8.一种内存越界的管理装置,其特征在于,包括:设置单元,用于...
【专利技术属性】
技术研发人员:师敏华,曾宪铎,张培良,
申请(专利权)人:大唐移动通信设备有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。