一种ELF程序里添加数据的方法、存储介质及智能终端与流程

文档序号:17948840发布日期:2019-06-18 23:52阅读:224来源:国知局
本发明涉及互联网
技术领域
:,尤其涉及的是一种elf程序里添加数据的方法、存储介质及智能终端。
背景技术
::elf的全称是:executableandlinkingformat.大意为可执行,可关联的文件格式,扩展名为elf.因此把这一类型的文件简称为"elf"。在进行elf程序编程开发阶段,程序代码里面的数据内容和大小都是确定的,而在实际项目开发中,有些数据内容和大小在代码开发编程阶段是未知的,只有在使用程序的时候才能确定。而现有技术对于在使用程序的时候才能确定的数据添加过程较为繁琐,无法实现快速添加数据,影响程序的使用。因此,现有技术还有待于改进和发展。技术实现要素:本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种elf程序里添加数据的方法、存储介质及智能终端,旨在解决现有技术中在使用程序的时候才能确定的数据添加过程较为繁琐,无法实现快速添加数据的问题。本发明解决技术问题所采用的技术方案如下:一种elf程序里添加数据的方法,其中,所述方法包括:查找elf程序文件中的未初始化数据节区,在未初始化数据节区添加标识符,并依据所述标识符添加目标数据;获取添加的目标数据的内存大小以及elf程序文件的格式,修复所述未初始化数据节区以及所述未初始化数据节区后面节区的结构;当elf程序被运行时,搜索所述标识符,获取标识符地址,并根据所述标识符地址获取所述目标数据。所述的elf程序里添加数据的方法,其中,所述查找elf程序中的未初始化数据节区,在未初始化数据节区添加标识符,并依据所述标识符添加目标数据的步骤,具体包括:从所述elf程序中解析elf程序文件格式,并找到所述elf程序文件中的未初始化数据节区;在所述未初始化数据节区中添加标识符,所述标识符用于定位所述未初始化数据节区的地址;在所述标识符的后面写入需要添加的目标数据。所述的elf程序里添加数据的方法,其中,所述未初始化数据节区为.bss节区。所述的elf程序里添加数据的方法,其中,所述标识符为0x55aa55aa。所述的elf程序里添加数据的方法,其中,所述获取添加的目标数据的内存大小以及elf程序文件的格式,修复所述未初始化数据节区以及所述未初始化数据节区后面节区的结构的步骤,包括:获取添加的目标数据的内存大小以及elf程序文件的格式;修复所述未初始化数据节区的内存大小;依据所述elf程序文件的格式,修复所述未初始化数据节区后面的节区的结构。所述的elf程序里添加数据的方法,其中,所述修复所述未初始化数据节区以及所述未初始化数据节区后面节区的结构,是用于保证elf程序结构以及elf程序文件格式的正确性。所述的elf程序里添加数据的方法,其中,所述当elf程序被运行时,搜索所述标识符,获取标识符地址,并根据所述标识符地址获取所述目标数据的步骤之前,包括:预先在elf程序中定义一个不需要初始化的变量,所述不需要初始化的变量是用于根据其地址来获取目标数据。所述的elf程序里添加数据的方法,其中,所述当elf程序被运行时,搜索所述标识符,获取标识符地址,并根据所述标识符地址获取所述目标数据的步骤,包括:当elf程序被使用时,获取所述不需要初始化的变量的地址;根据获取的变量的地址搜索标识符,获取标识符地址;依据所述标识符地址获取所述标识符地址后的目标数据。一种存储介质,其上存储有多条指令,其中,所述指令适于由处理器加载并执行,以执行实现上述任一项所述的elf程序里添加数据的方法的步骤。一种智能终端,包括:处理器、与处理器通信连接的存储介质,其中,所述存储介质适于存储多条指令;所述处理器适于调用所述存储介质中的指令,以执行实现上述任一项所述的elf程序里添加数据的方法的步骤。本发明的有益效果:本发明由于在未初始化数据节区中添加目标数据并基于预设的标识符来对目标数据进行查找,以实现在elf程序使用时快速对目标数据进行定位,并调用,提高运行效率。附图说明图1是本发明提供的elf程序里添加数据的方法的较佳实施例的流程图。图2是本发明提供的elf程序里添加数据的方法中的步骤s100的流程图。图3是本发明提供的elf程序里添加数据的方法中的步骤s200的流程图。图4是本发明提供的elf程序里添加数据的方法中的步骤s300的流程图。图5是本发明提供的智能终端的功能原理图。具体实施方式为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明提供的一种elf程序里添加数据的方法,可以应用于终端中。其中,终端可以但不限于是各种个人计算机、笔记本电脑、手机、平板电脑、车载电脑和便携式可穿戴设备。本发明的终端采用多核处理器。其中,终端的处理器可以为中央处理器(centralprocessingunit,cpu),图形处理器(graphicsprocessingunit,gpu)、视频处理单元(videoprocessingunit,vpu)等中的至少一种。由于在进行elf程序编程开发阶段,程序代码里面的数据内容和大小都是确定的,而在实际项目开发中,有些数据内容和大小在代码开发编程阶段是未知的,只有在使用程序的时候才能确定。为了解决现有技术中在使用程序时数据添加繁琐等问题,本实施例提供一种elf程序里添加数据的方法,具体如图1中所示,包括如下步骤:步骤s100、查找elf程序文件中的未初始化数据节区,在未初始化数据节区添加标识符,并依据所述标识符添加目标数据;步骤s200、获取添加的目标数据的内存大小以及elf程序文件的格式,修复所述未初始化数据节区以及所述未初始化数据节区后面节区的结构;步骤s300、当elf程序被运行时,搜索所述标识符,获取标识符地址,并根据所述标识符地址获取所述目标数据。elf的全称是executableandlinkingformat.大意为可执行,可关联的文件格式,扩展名为elf,因此把这一类型的文件简称为"elf"。具体实施时,本实施例中主要是根据elf程序文件的结构来对目标数据进行添加,并且在数据添加后不影响其他内容,保证在elf程序运行时可以正常调用添加的目标数据,并且提高效率。具体地,本实施例中首先需要确定找到elf程序中的未初始化数据节区,并在该节区中添加目标数据,具体如图2中所示,包括以下步骤:步骤101、从所述elf程序中解析elf程序文件格式,并找到所述elf程序文件中的未初始化数据节区;步骤102、在所述未初始化数据节区中添加标识符,所述标识符用于定位所述未初始化数据节区的地址;步骤103、在所述标识符的后面写入需要添加的目标数据。本实施例首先从elf程序中解析出elf程序文件格式,并从elf程序文件中查找到未初始化数据节区。较佳地,本实施例中的未初始化数据节区为.bss节区,该.bss节区在程序载入内存后的末尾数据,因此就可以改变.bss节区的结构,并向其中添加目标数据,这样也不会影响elf程序文件中的其他内容。当查找到所述未初始化数据节区(.bss节区)之后,本实施例中在未初始化数据节区的末尾添加标识符。该标识符主要是用于标识该未初始化数据节区,由于该未初始化数据节区(.bss节区)是用于添加目标数据的,而采用标识符标识该未初始化数据节区后,就可以在elf程序运行时,快速地查找到该未初始化数据节区,从而提高数据添加速度。优选地,本实施例中的标识符为0x55aa55aa,采用字符类型的标识符便于对其进行定位查找。进一步地,当在该未初始化数据节区(.bss节区)中添加标识符后,本实施例在标识符后写入目标数据。当在未初始化数据节区(.bss节区)中写入目标数据之后,需要对未初始化数据节区(.bss节区)的结构进行修复,具体如图3中所示,包括以下步骤:步骤201、获取添加的目标数据的内存大小以及elf程序文件的格式;步骤202、修复所述未初始化数据节区的内存大小;步骤203、依据所述elf程序文件的格式,修复所述未初始化数据节区后面的节区的结构。具体地,为保证未初始化数据节区在添加数据之后,而不对节区的结构有所影响,需要对数据未初始化数据节区进行修复。首先是获取所添加的目标数据的内存大小以及elf程序文件的格式,然后根据所添加的目标数的内存大小去修复未初始化数据节区(.bss节区)的内存大小,以便未初始化数据节区(.bss节区)能够容纳到目标数据。进一步地,再根据获取到的elf程序文件的格式,来对未初始化数据节区(.bss节区)后面节区的结构就那些修复,从而保证elf程序文件的格式的正确性,保证数据添加前后格式的一致性。当目标数据添加完成后,需要对目标数据进行调用,具体如图4中所示,包括以下步骤:步骤301、当elf程序被使用时,获取所述不需要初始化的变量的地址;步骤302、根据获取的变量的地址搜索标识符,获取标识符地址;步骤303、依据所述标识符地址获取所述标识符地址后的目标数据。具体地,本实施例中预先在elf程序中定义一个不需要初始化的变量,所述不需要初始化的变量是用于根据其地址来获取目标数据。当elf程序被使用时,获取所述不需要初始化的变量的地址,该不需要初始化的变量与未初始化的变量对应,然后该该地址搜索标识符,例如0x55aa55aa,从而就获取到标识符的地址,而由于标识符的地址后面的内容就是写入的内容,因此,当elf程序运行的时候就可以根据该标识符的地址对目标数据进行调用,更加方便与快捷。本实施例由于在未初始化数据节区中添加目标数据并基于预设的标识符来对目标数据进行查找,以实现在elf程序使用时快速对目标数据进行定位,并调用,提高运行效率。基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图5所示。该智能终端包括通过系统总线连接的处理器、存储器、网络接口、显示屏、温度传感器。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种elf程序里添加数据的方法。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏,该智能终端的温度传感器是预先在智能终端内部设置,用于检测内部设备的当前运行温度。本领域技术人员可以理解,图5中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。在一个实施例中,提供了一种智能终端,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时至少可以实现以下步骤:查找elf程序文件中的未初始化数据节区,在未初始化数据节区添加标识符,并依据所述标识符添加目标数据;获取添加的目标数据的内存大小以及elf程序文件的格式,修复所述未初始化数据节区以及所述未初始化数据节区后面节区的结构;当elf程序被运行时,搜索所述标识符,获取标识符地址,并根据所述标识符地址获取所述目标数据。在其中一个实施例中,该处理器执行计算机程序时还可以实现以下步骤:从所述elf程序中解析elf程序文件格式,并找到所述elf程序文件中的未初始化数据节区;在所述未初始化数据节区中添加标识符,所述标识符用于定位所述未初始化数据节区的地址;在所述标识符的后面写入需要添加的目标数据。所述未初始化数据节区为.bss节区。所述标识符为0x55aa55aa。在其中一个实施例中,该处理器执行计算机程序时还可以实现以下步骤:获取添加的目标数据的内存大小以及elf程序文件的格式;修复所述未初始化数据节区的内存大小;依据所述elf程序文件的格式,修复所述未初始化数据节区后面的节区的结构。所述修复所述未初始化数据节区以及所述未初始化数据节区后面节区的结构,是用于保证elf程序结构以及elf程序文件格式的正确性。在其中一个实施例中,该处理器执行计算机程序时还可以实现以下步骤:预先在elf程序中定义一个不需要初始化的变量,所述不需要初始化的变量是用于根据其地址来获取目标数据。当elf程序被使用时,获取所述不需要初始化的变量的地址;根据获取的变量的地址搜索标识符,获取标识符地址;依据所述标识符地址获取所述标识符地址后的目标数据。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。综上所述,本发明公开了一种elf程序里添加数据的方法、存储介质及智能终端,方法包括:查找elf程序文件中的未初始化数据节区,在未初始化数据节区添加标识符,并依据所述标识符添加目标数据;获取添加的目标数据的内存大小以及elf程序文件的格式,修复所述未初始化数据节区以及所述未初始化数据节区后面节区的结构;当elf程序被运行时,搜索所述标识符,获取标识符地址,并根据所述标识符地址获取所述目标数据。本发明通过在未初始化数据节区中添加目标数据并基于预设的标识符来对目标数据进行查找,以实现在elf程序使用时快速对目标数据进行定位,并调用,提高运行效率。应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1