一种检测ELF文件的方法及电子设备与流程

文档序号:20600721发布日期:2020-05-01 21:37阅读:222来源:国知局

技术领域
:】本发明涉及互联网
技术领域
:,尤其涉及一种检测elf文件的方法及电子设备。
背景技术
::物联网的快速兴起,搭载系统的物联网设备越来越广泛的被应用。elf(executableandlinkingformat,可执行与连接格式)文件作为unix-like(linux/unix)系统上的标准可执行文件、动态连接库、目标代码等文件格式之一,它的重要性不容质疑。通常elf文件的细节详情都是完全公开的,所以在系统上的elf文件极易受到黑客或者有心人的篡改并植入相应的恶意代码。目前,为了保护可执行elf文件不被篡改,通常的处理方法是elf文件提供者用摘要算法对elf文件生成一个唯一的数字签名,在提供elf文件的时候同时提供elf文件的数字签名a,此数字签名a确保elf文件的唯一性。用户收到elf文件后通过相应的摘要算法对elf文件生成一个相应的数字签名b,如果数字签名a与数字签名b相同,则证明elf文件是供应商提供的原始文件。如果数字签名a与数字签名b不相同,则表明elf文件已经被篡改。然而,由于elf文件和数字签名同时提供,并且都暴露在外。导致如果elf文件和数字签名提供的路径被黑客知道并有相应的读写权限,那么黑客可以对elf文件进行修改,并用摘要算法对此篡改的elf文件生成数字签名c,并替换掉原有的数字签名a,此时上述的校验elf文件的方法失效。因此,急需一种更加安全的方法来保护elf文件不被篡改。技术实现要素:本发明要解决的技术问题是提供一种检测elf文件的方法及电子设备,解决elf文件安全性低的技术问题。本发明实施例的一个方面,提供一种检测elf文件的方法,所述方法包括:获取包含目标存储空间的第一elf文件,所述目标存储空间中存储有第一校验信息;将所述目标存储空间中存储的第一校验信息替换为默认值,以生成第二elf文件;生成所述第二elf文件的第二校验信息;根据所述第一校验信息和所述第二校验信息校验所述第一elf文件的完整性。可选地,所述将所述目标存储空间中的第一校验信息替换为默认值,以生成第二elf文件,包括:解析所述第一elf文件的文件结构,以获取所述第一elf文件的节头表的偏移量、节头表中的项数和节头字符串表,所述节头表包括所述节头字符串表;根据所述第一elf文件的节头表的偏移量遍历所述第一elf文件的节头表中的节,以在所述第一elf文件的节头字符串表中确定所述目标存储空间;将所述目标存储空间存储中的第一校验信息修改为所述默认值,以生成所述第二elf文件。可选地,所述方法还包括:当所述第一elf文件完整时,将所述目标存储空间中的所述默认值修改为所述第一校验信息,以将所述第二elf文件恢复为所述第一elf文件;当所述第一elf文件不完整时,删除所述第二elf文件并退出程序。可选地,所述方法还包括:在运行所述第一elf文件后,通过所述第一elf文件进行自检,以重新校验所述第一elf文件的完整性。可选地,所述通过所述第一elf文件进行自检,包括:对所述第一elf文件进行拷贝以生成第三elf文件;通过运行中的所述第一elf文件对所述第三elf文件进行解析,以获取所述第三elf文件的节头表的偏移量、节头表中的项数和节头字符串表;根据所述第三elf文件的节头表的偏移量,通过运行中的所述第一elf文件遍历所述第三elf文件的节头表中的节,以获取所述第三elf文件的目标存储空间以及所述第三elf文件的目标存储空间中存储的第三校验信息;将所述第三校验信息修改为所述第三elf文件的默认值,以生成第四elf文件;通过运行中的所述第一elf文件生成所述第四elf文件的第四校验信息;通过运行中的所述第一elf文件比对所述第三校验信息和所述第四校验信息,如果所述第三校验信息和所述第四校验信息相同,则确定所述第一elf文件完整,否则,确定所述第一elf文件不完整。可选地,所述确定所述第一elf文件完整之后还包括:删除所述第三elf文件。本发明实施例的另一个方面,提供一种生成elf文件的方法,所述方法包括:生成包含目标存储空间的第二elf文件,其中,所述目标存储空间存储有默认值;生成所述第二elf文件的第一校验信息;将所述第一校验信息写入所述目标存储空间并替换掉所述默认值,以生成第一elf文件。可选地,所述将所述第一校验信息写入所述目标存储空间并替换掉所述默认值,以生成第一elf文件,包括:解析所述第二elf文件的文件结构,以获取所述第二elf文件的节头表的偏移量、节头表中的项数和节头字符串表,所述节头表包括所述节头字符串表;根据所述第二elf文件的节头表的偏移量遍历所述第二elf文件的节头表中的节,以在所述第二elf文件的节头字符串表中找到所述目标存储空间;将所述第一校验信息写入所述目标存储空间并替换掉所述目标存储空间中的所述默认值,以生成所述第一elf文件。本发明实施例的又一个方面,提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。本发明实施例的还一个方面,提供一种非易失性计算机可读存储介质所述计算机可读存储介质存储有计算机可执行指令,当所述计算机可执行指令被电子设备执行时,使所述电子设备执行如上所述的方法。在本发明实施例中,通过获取包含第一校验信息的第一elf文件,根据所述第一elf文件生成第二elf文件,并获取所述第二elf文件的第二校验信息,最后根据所述第一校验信息和所述第二校验信息对所述第一elf文件的完整性进行检测。该实施方式将原始elf文件的第一校验信息内置于elf文件中从而得到第一elf文件,根据包含所述第一校验信息的第一elf文件来确定第一elf文件的完整性,相比较于现有技术,本发明实施例隐藏了数字签名等敏感信息,提升了elf文件的安全性,并且减少了不必要的下载。【附图说明】一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。图1是本发明实施例提供的一种实时环境的示意图;图2a是本发明实施例提供的一种elf文件的示意图;图2b是本发明实施例提供的另一种elf文件的示意图;图2c是本发明实施例提供的又一种elf文件的示意图;图3是本发明实施例提供的一种检测elf文件的方法流程图;图4是本发明实施例提供的生成包含所述第一校验信息的第一elf文件的方法的流程图;图5是本发明实施例提供的根据预设的第一独立程序将第一校验信息写入目标存储空间并替换掉所述默认值,以生成第一elf文件的方法的流程图;图6是本发明实施例提供的根据所述第一elf文件生成第二elf文件的方法的流程图;图7是本发明实施例提供的根据所述第一elf文件进行自检的方法的流程图;图8是本发明实施例提供的一种检测elf文件的装置的结构示意图;图9是本发明另一实施例提供的一种检测elf文件的装置的结构示意图;图10是本发明实施例提供的一种电子设备的结构示意图。【具体实施方式】为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。需要说明的是,如果不冲突,本发明实施例中的各个特征可以相互组合,均在本发明的保护范围之内。另外,虽然在装置示意图中进行了功能模块的划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置示意图中的模块划分,或流程图中的顺序执行所示出或描述的步骤。请参阅图1,图1是本发明实施例提供的检测elf文件的方法所涉及的实时环境的示意图。该实施环境包括服务器100和终端200。其中,服务器100为一种应用程序服务器,具备接收应用程序开发者发布的应用程序,并存储、发布所述应用程序。在本实施例中,服务器100可以生成包含数字签名等安全信息的elf文件,其主要是将原始elf文件的数字签名等安全信息内置于elf文件的节头表中。终端200可以为智能手机、平板电脑、个人电脑等,本实施例不对终端200的产品形态作具体的限定,该终端200中安装有各种应用程序,如视频播放类应用、社交类应用程序、购物类应用程序、导航类应用程序等。在本实施例中,终端200从服务器100获取包含数字签名等安全信息的elf文件后,对该elf文件进行校验,该过程主要根据包含数字签名等安全信息的elf文件来进行校验。在本实施例中,在所述服务器100和终端200上还可以对elf文件进行自检,进行自检时主要根据包含数字签名等安全信息的elf文件来进行。上述服务器100和终端200之间可以通过有线网络或无线网络进行通信。为了更好的理解本发明实施例,下面还将对elf文件进行介绍。elf文件主要包括三种类型的目标文件:(1)可重定位文件(relocatablefile),主要保存代码和相关数据,用来和其他目标文件结合来创建一个可执行文件或一个被共享的目标文件,例如,linux系统中后缀为.a和.o的文件;(2)可执行文件(executablefile),主要保存有一个能够执行的程序;(3)被共享的目标文件(sharedobjectfile),也可称为共享库,主要保存用于链接的代码和相关数据。可执行elf文件的格式可以如下所示,主要包括32位系统的elf文件的头部格式和64位系统的elf文件的头部格式。32位系统的头部:64位系统的头部:请参阅图2a和图2b,elf文件主要包括以下四个部分:(1)elf头10,用于指示该elf文件的组织信息,如版本信息、目标文件类型、程序头表的入口地址、节头表的入口地址、机器体系结构架构、处理器架构(也可称为指令集)、节的数量等;(2)程序头表11,用于指示如何创建进程映像;(3)节12或者段13,用于提供目标文件的各项信息,如指令、数据、符号表、字符串表、散列表、重定位信息等,段为一个或多个节,节也可以称为节区;(4)节头表14,用于指示elf文件中每个节的信息,如节的入口、节的名称、节的类型、节的大小、节的数量等。下面以64位系统的elf文件来进行具体说明,例如,请参阅图2c,提供了一种elf文件的示意图,所述elf文件包括elf文件头部、elf节头表和节头表字符串表,并示出了elf文件头部的偏移量和elf节头表的偏移量,其中,所述节头表包括所述节头字符串表。所述elf文件格式具体为64位系统的elf文件格式,其文件结构如下:下面,对本发明实施例提供的检测elf文件的方法进行介绍。请参阅图3,图3为本发明实施例提供的一种检测elf文件的方法的交互图,该方法应用于上述服务器100和终端200。具体地,如图3所示,所述方法包括:s11、所述服务器生成包含目标存储空间的第一elf文件,所述目标存储空间中存储有第一校验信息。其中,所述第一校验信息可以是数字签名,所述第一校验信息还可以是除了数字签名之外的网址、唯一识别码等信息。所述第一elf文件指的是包含所述第一校验信息的原始elf文件,通过在原始elf文件中加入所述第一校验信息从而得到所述第一elf文件。具体地,如图4所示,所述服务器生成包含目标存储空间的第一elf文件具体包括:s111、生成包含目标存储空间的第二elf文件,其中,所述目标存储空间存储有默认值。在本实施例中,生成包含目标存储空间的第二elf文件的过程包括:通过在原始elf文件对应的源代码中加入预设代码,通过编译器编译包含所述预设代码的源代码从而得到所述第二elf文件,该第二elf文件中带有特殊的节,并且该节对应一默认值,所述默认值可以使用不同长度的占位符来表示,例如,当采用md5摘要算法时,可以将所述默认值设置为:000000000000000000000000,当使用其他算法时,占位符的长度可以不同。其中,所述特殊的节和所述特殊的节对应的默认值构成所述目标存储空间,所述目标存储空间用于存放所述默认值或者所述第一校验信息。其中,所述预设代码例如可以是如下代码:例如:volatileconststatic__attribute__((unused,section(".so_sign")))charso_sign[]=“00000000000000000000000000000000”;//默认值,占位符s112、生成所述第二elf文件的第一校验信息。其中,可以根据所述预设算法(比如md5、sha1、hmac等算法)生成所述第二elf文件的第一校验信息。所述第一校验信息具体可以是数字签名,也即是根据摘要算法对包含目标存储空间的第二elf文件生成一个数字签名。假设所述摘要算法为md5,使用md5对所述第二elf文件生成数字签名的过程包括,使用md5算法对所述第二elf文件信息生成摘要,并使用私钥加密所述摘要,从而生成所述数字签名。该详细过程可以参考现有技术,在此不再赘述。s113、将所述第一校验信息写入所述目标存储空间并替换掉所述默认值,以生成第一elf文件。在本实施例中,可以通过预设的第一独立程序对上述包含目标存储空间的第二elf文件进行改造,主要是将所述第一校验信息替换掉所述特殊的节的默认值,进而得到一个新的elf文件,即所述第一elf文件。所述第一独立程序是开发人员预设的专有程序,所述第一独立程序用于对第二elf文件进行解析和检索,获取所述特殊的节的位置和相应的值,所述第一独立程序还具有操作elf文件的功能,比如,更改第二elf文件中所述特殊的节对应的默认值。其中,如图5所示,所述将所述第一校验信息写入所述目标存储空间并替换掉所述默认值,以生成第一elf文件,包括:s1131、解析所述第二elf文件的文件结构,以获取所述第二elf文件的节头表的偏移量、节头表中的项数和节头字符串表,所述节头表包括所述节头字符串表;s1132、根据所述第二elf文件的节头表的偏移量遍历所述第二elf文件的节头表中的节,以在所述第二elf文件的节头字符串表中找到所述目标存储空间;s1133、将所述第一校验信息写入所述目标存储空间并替换掉所述目标存储空间中的所述默认值,以生成所述第一elf文件。在本实施例中,首先,根据所述第二elf文件的节头表的偏移量确定节头表在所述第二elf文件中的位置;然后,在确定所述节头表在所述第二elf文件中的位置后,遍历所述确定的节头表中的节头字符串表,以在所述节头字符串表中找到与所述目标存储空间对应的名称相同的字符串,其中,可以通过一字符串对所述目标存储空间进行命名;再确定所述字符串对应的节,进而确定所述节的值的位置,所述位置即所述目标存储空间。在找到所述目标存储空间后,再将所述默认值替换为所述第一校验信息,从而得到所述第一elf文件。例如,假设所述第一校验信息为sign,所述目标存储空间命名为.so_sign,其对应的节为section,并且其默认值为value。如图2c所示,在生成所述第一elf文件时,首先获取节头表的偏移量e_shoff,根据节头表的偏移量e_shoff确定节头表的位置;其中,所述节头表包括节头字符串表,所述节头字符串表中包括若干个字符串,所述节头字符串表包含所有节的名字。然后遍历所述节头字符串表,以在所述节头字符串表中找到命名为.so_sign的字符串,进而找到其对应的节section,获取所述节section的位置,该位置即所述目标存储空间。最后将所述sign替换掉所述value,从而得到所述第一elf文件。s12、所述服务器发送所述第一elf文件至所述终端。所述服务器可以通过无线或者有线通信的方式将所述第一elf文件发送至所述终端。s13、所述终端将所述目标存储空间中存储的第一校验信息替换为默认值,以生成第二elf文件。其中,如图6所示,所述将所述目标存储空间中的第一校验信息替换为默认值,以生成第二elf文件,包括:s131、解析所述第一elf文件的文件结构,以获取所述第一elf文件的节头表的偏移量、节头表中的项数和节头字符串表,所述节头表包括所述节头字符串表;s132、根据所述第一elf文件的节头表的偏移量遍历所述第一elf文件的节头表中的节,以在所述第一elf文件的节头字符串表中确定所述目标存储空间;s133、将所述目标存储空间存储中的第一校验信息修改为所述默认值,以生成所述第二elf文件。上述根据第一elf文件生成第二elf文件的过程实质就是将所述第一elf文件中的第一校验信息替换为所述默认值,从而获得包含默认值的elf文件,也即第二elf文件。其中,可以通过第二独立程序解析所述第一elf文件的文件结构。所述第二独立程序也是开发人员预设的专有程序,所述第二独立程序用于对第一elf文件进行解析和检索,获取所述特殊的节的位置和相应的值,所述第二独立程序还具有生成签名信息和比对签名信息的功能。上述s131-s133的具体过程可以参考上述将所述默认值替换为第一校验信息的过程。需说明的是,所述第一独立程序和所述第二独立程序可以作为一个独立的程序的两个功能,也可以是两个独立程序分别对应的两个功能。s14、所述终端生成所述第二elf文件的第二校验信息,并根据所述第一校验信息和所述第二校验信息校验所述第一elf文件的完整性。其中,生成所述第二elf文件的第二校验信息包括:通过所述第二独立程序对所述第二elf文件采用摘要算法(比如md5、sha1、hmac等)获取所述第二elf文件的密文信息,所述密文信息即所述第二校验信息。例如,上述使用md5算法生成所述第二elf文件的第一校验信息,如果所述第一校验信息为数字签名,所述服务器将第二elf文件信息本身和第一校验信息对应的摘要一起发送给终端,所述终端同样使用md5算法对收到的第二elf文件信息本身生成新的摘要,所述新的摘要即所述第二校验信息,然后所述终端通过比较所述第一校验信息和所述第二校验信息即可以判断所述elf文件是否被篡改。其中,所述根据所述第一校验信息和所述第二校验信息对所述第一elf文件的完整性进行检测,包括:判断所述第一校验信息和所述第二校验信息是否相同,也即是比较所述第一校验信息和所述第二校验信息是否完全一致。若所述第一校验信息和第二校验信息相同,则说明所述第一elf文件完整。若所述第一校验信息和所述第二校验信息不相同,则说明所述elf文件不完整,也即表明所述elf文件可能被篡改了。同样请参阅图3,当检测所述第一elf文件完整时,所述终端还用于执行下述步骤s15;当检测所述第一elf文件不完整时,所述终端还用于执行下述步骤s16。s15、所述终端将所述目标存储空间中的所述默认值修改为所述第一校验信息,以将所述第二elf文件恢复为所述第一elf文件。s16、删除所述第二elf文件并退出程序。其中,当所述第一elf文件不完整时,所述方法还包括发送提示信息至所述服务器,从而防止篡改的elf文件对用户的安全产生影响。上述过程是在所述终端接收到所述第一elf文件后对所述第一elf文件进行校验的过程,该过程解决了如何判别elf文件下载或者升级后elf文件中代码段被修改的问题。通过上述方法,提升了elf文件的安全性,并且减少了不必要的下载。由于所述elf文件本身携带数字签名,因此,所述elf文件具备自检功能。所述elf文件自检的过程可以在所述服务器上实现,也可以在所述终端上实现。因此,在一些实施例中,同样请参阅图3,当检测所述第一elf文件完整时,所述终端还用于执行下述步骤s17。s17、在运行所述第一elf文件后,通过所述第一elf文件进行自检,以重新校验所述第一elf文件的完整性。其中,如图7所示,所述通过所述第一elf文件进行自检,包括:s171、对所述第一elf文件进行拷贝以生成第三elf文件;s172、通过运行中的所述第一elf文件对所述第三elf文件进行解析,以获取所述第三elf文件的节头表的偏移量、节头表中的项数和节头字符串表;s173、根据所述第三elf文件的节头表的偏移量,通过运行中的所述第一elf文件遍历所述第三elf文件的节头表中的节,以获取所述第三elf文件的目标存储空间以及所述第三elf文件的目标存储空间中存储的第三校验信息;其中,获取所述第三elf文件的目标存储空间和所述第三校验信息的详细过程可以参考上述方法实施例。s174、将所述第三校验信息修改为所述第三elf文件的默认值,以生成第四elf文件;其中,所述第三elf文件的默认值也即是所述第一elf文件的默认值,该默认值可以与上述实施例中的默认值相同。比如,当采用md5摘要算法时,可以将所述默认值设置为:000000000000000000000000,当使用其他算法时,占位符的长度可以不同。s175、通过运行中的所述第一elf文件生成所述第四elf文件的第四校验信息;例如,可以通过运行中的第一elf文件对所述第四elf文件采用摘要算法(比如md5、sha1、hmac等)获取所述第四elf文件的密文信息,所述密文信息即所述第四校验信息。s176、通过运行中的所述第一elf文件比对所述第三校验信息和所述第四校验信息,如果所述第三校验信息和所述第四校验信息相同,则确定所述第一elf文件完整,否则,确定所述第一elf文件不完整。s177、在确定所述第一elf文件完整之后,删除所述第三elf文件。在本实施例中,所述第一elf文件包含所述第二独立程序的检验逻辑,因此,可以通过运行所述第一elf文件实现对所述第一elf文件的自检过程。在本发明实施例中,所述elf文件自带校验功能,从而能够防止elf文件下载并校验成功后被恶意地修改,进一步提高了elf文件的安全性。需要说明的是,上述对所述第一elf文件进行自检的过程也可以在所述服务器端进行,具体地,同样请参阅图3,所述方法还包括:s18、所述终端向所述服务器发送所述第一elf文件为完整elf文件的确认指令。其中,所述终端可以通过有线或者无线的方式向所述服务器发送所述第一elf文件为完整elf文件的确认指令。s19、所述服务器接收所述确认指令,并运行所述第一elf文件,通过运行的所述第一elf文件进行自检,以重新校验所述第一elf文件的完整性。所述服务器通过运行的所述第一elf文件进行自检的详细过程可以参考上述s171至s177,在此不再赘述。请参阅图8,图8是本发明实施例提供的一种检测elf文件的装置的结构示意图,如图8所示,所述装置40可以应用于所述终端。所述装置40包括:第一获取模块41、第一生成模块42、第二获取模块43以及检测模块44。所述第一获取模块41,用于获取包含目标存储空间的第一elf文件,所述目标存储空间中存储有第一校验信息;所述第一生成模块42,用于将所述目标存储空间中存储的第一校验信息替换为默认值,以生成第二elf文件;所述第二获取模块43,用于生成所述第二elf文件的第二校验信息;所述检测模块44,用于根据所述第一校验信息和所述第二校验信息校验所述第一elf文件的完整性。其中,所述第一生成模块42包括解析单元421、获取单元422、处理单元423。所述解析单元421,用于解析所述第一elf文件的文件结构,以获取所述第一elf文件的节头表的偏移量、节头表中的项数和节头字符串表,所述节头表包括所述节头字符串表;所述获取单元422,用于根据所述第一elf文件的节头表的偏移量遍历所述第一elf文件的节头表中的节,以在所述第一elf文件的节头字符串表中确定所述目标存储空间;所述处理单元423,用于将所述目标存储空间存储中的第一校验信息修改为所述默认值,以生成所述第二elf文件。其中,所述检测模块44具体用于:判断所述第一校验信息和所述第二校验信息是否相同;若是,则所述第一elf文件完整;若否,则所述第一elf文件不完整。可选地,所述检测模块44还用于:当所述第一elf文件完整时,将所述目标存储空间中的所述默认值修改为所述第一校验信息,以将所述第二elf文件恢复为所述第一elf文件;当所述第一elf文件不完整时,删除所述第二elf文件并退出程序,或者发送提示信息。在一些实施例中,同样请参阅图8,所述装置40还包括自检模块45,所述自检模块45用于在确定所述第一elf文件完整时,在运行所述第一elf文件后,通过所述第一elf文件进行自检,以重新校验所述第一elf文件的完整性。所述自检模块45具体用于:在程序启动时根据所述第一elf文件进行自检,以检测所述elf文件的完整性;或者周期性的根据所述第一elf文件进行自检,以检测所述elf文件的完整性。所述自检模块45具体还用于:对所述第一elf文件进行拷贝以生成第三elf文件;通过运行中的所述第一elf文件对所述第三elf文件进行解析,以获取所述第三elf文件的节头表的偏移量、节头表中的项数和节头字符串表;根据所述第三elf文件的节头表的偏移量,通过运行中的所述第一elf文件遍历所述第三elf文件的节头表中的节,以获取所述第三elf文件的目标存储空间以及所述第三elf文件的目标存储空间中存储的第三校验信息;将所述第三校验信息修改为所述第三elf文件的默认值,以生成第四elf文件;通过运行中的所述第一elf文件生成所述第四elf文件的第四校验信息;通过运行中的所述第一elf文件比对所述第三校验信息和所述第四校验信息,如果所述第三校验信息和所述第四校验信息相同,则确定所述第一elf文件完整,否则,确定所述第一elf文件不完整;确定所述第一elf文件完整之后,删除所述第三elf文件。需要说明的是,本实施例提供的检测elf文件的装置可执行上述实施例所提供的检测elf文件的方法,具备执行方法相应的功能模块和有益效果。未在检测elf文件的装置实施例详尽描述的技术细节,可参见本发明实施例所提供的检测elf文件的方法。请参阅图9,图9是本发明实施例提供的一种检测elf文件的装置的结构示意图,如图9所示,所述装置50可以应用于所述服务器。所述装置50包括:第一生成模块51、校验信息生成模块52以及第二生成模块52。所述第一生成模块51用于生成包含目标存储空间的第二elf文件,其中,所述目标存储空间存储有默认值;所述校验信息生成模块52用于生成所述第二elf文件的第一校验信息;所述第二生成模块52用于将所述第一校验信息写入所述目标存储空间并替换掉所述默认值,以生成第一elf文件。其中,所述第二生成模块52具体用于:解析所述第二elf文件的文件结构,以获取所述第二elf文件的节头表的偏移量、节头表中的项数和节头字符串表,所述节头表包括所述节头字符串表;根据所述第二elf文件的节头表的偏移量遍历所述第二elf文件的节头表中的节,以在所述第二elf文件的节头字符串表中找到所述目标存储空间;将所述第一校验信息写入所述目标存储空间并替换掉所述目标存储空间中的所述默认值,以生成所述第一elf文件。需要说明的是,本实施例提供的检测elf文件的装置可执行上述实施例所提供的检测elf文件的方法,具备执行方法相应的功能模块和有益效果。未在检测elf文件的装置实施例详尽描述的技术细节,可参见本发明实施例所提供的检测elf文件的方法。请参阅图10,图10是本发明实施例提供的一种电子设备的结构示意图,所述电子设备60可以用于执行如上所述的检测elf文件的方法,如图10所示,该电子设备60包括:一个或多个处理器61以及存储器62,图10中以一个处理器61为例。处理器61和存储器62可以通过总线或者其他方式连接,图10中以通过总线连接为例。存储器62作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的检测elf文件的方法对应的程序指令/模块(例如,附图8和附图9所示的各个模块)。处理器61通过运行存储在存储器62中的非易失性软件程序、指令以及模块,从而执行检测elf文件的装置的各种功能应用以及数据处理,即实现上述方法实施例的检测elf文件的方法。存储器62可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据检测elf文件的装置的使用所创建的数据等。此外,存储器62可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器62可选包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至检测elf文件的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述一个或者多个模块存储在所述存储器62中,当被所述一个或者多个处理器61执行时,执行上述任意方法实施例中的检测elf文件的方法,例如,执行以上描述的图3中的方法步骤s11至步骤s19,图4中的方法步骤s111至步骤s113,图5中的方法步骤s1131至步骤s1133,图6中的方法步骤s131至步骤s133,实现图7中的方法步骤s171至步骤s177,实现图8中模块41-45,单元421-423,图9中模块51-52的功能。上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。本发明实施例的电子设备以多种形式存在,包括但不限于移动终端、服务器等其他具有数据交互功能的电子装置。本发明实施例提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被电子设备执行上述任意方法实施例中的检测elf文件的方法,例如,执行以上描述的图3中的方法步骤s11至步骤s19,图4中的方法步骤s111至步骤s113,图5中的方法步骤s1131至步骤s1133,图6中的方法步骤s131至步骤s133,实现图7中的方法步骤s171至步骤s177,实现图8中模块41-45,单元421-423,图9中模块51-52的功能。本发明实施例提供了一种计算机程序产品,包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时时,使所述计算机执行上述任意方法实施例中的检测elf文件的方法,例如,执行以上描述的图3中的方法步骤s11至步骤s19,图4中的方法步骤s111至步骤s113,图5中的方法步骤s1131至步骤s1133,图6中的方法步骤s131至步骤s133,实现图7中的方法步骤s171至步骤s177,实现图8中模块41-45,单元421-423,图9中模块51-52的功能。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件来实现。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1