一种查找elf文件中符号信息的方法及系统的制作方法

文档序号:9708360阅读:224来源:国知局
一种查找elf文件中符号信息的方法及系统的制作方法【
技术领域
】[0001]本发明涉及网络安全
技术领域
,尤其涉及一种查找ELF文件中符号信息的方法及系统。【
背景技术
】[0002]ELF即ExecutableandLinkableFormat,最初是由UNIX系统实验室开发并发布的,作为应用程序二进制接口的一部分,目前广泛应用在各种Linux系统上,例如目前热门的Android平台。越来越多的Android应用采取了大量的Native开发来保护其核心逻辑,而Native开发的方式即使用C等语言编写一些ELF格式的模块,相比Java代码,Native代码逆向成本较高。[0003]对于正常ELF文件来说,常见的解析节信息的方法十分有效,但越来越多的软件对其ELF文件进行了特殊处理以防逆向,导致了常见的解析方法失效。【
发明内容】[0004]针对上述技术问题,本发明提供了一种查找ELF文件中符号信息的方法及系统,该方法通过对文件头部结构的深度解析,最终得到符号名、符号类型、起始偏移及大小信息。对于以往的ELF文件来说,常见的解析节信息十分有效,若面对进行了特殊处理以防逆向的ELF文件,常见的解析方法则会失效。本发明针对一般节信息缺失的ELF动态链接库文件,可有效找到其符号表。[0005]一种查找ELF文件中符号信息的方法,包括:读取ELF文件,获取文件头部结构;解析文件头部结构,获取ProgramHeader;解析ProgramHeader,获取DYNAMICSegment;解析DYNAMICSegment,获取符号表;解析符号表,得到符号名、符号类型、起始偏移及大小信息。[0006]进一步的,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。[0007]一种查找ELF文件中符号信息的系统,包括:读取文件模块,用于读取ELF文件,获取文件头部结构;解析头部结构模块,用于解析文件头部结构,获取ProgramHeader;解析ProgramHeader模块,用于解析ProgramHeader,获取DYNAMICSegment;解析DYNAMICSegment模块,用于解析DYNAMICSegment,获取符号表;解析符号表模块,用于解析符号表,得到符号名、符号类型、起始偏移及大小信息。[0008]进一步的,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。[0009]本发明涉及一种查找ELF文件中符号信息的方法,本方法通过其加载时所必须的ProgramHeader信息找到所需的DYNAMICSegment,再通过DYNAMICSegment找到符号表、Hash表和字符串表,解析符号表得到符号信息。本方法克服了一般缺失节信息的ELF动态链接库文件无法有效的找到其符号表及符号信息的问题,进而提高了快速解析ELF文件找到符号信息的效率。【附图说明】[0010]为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0011]图1为本发明提供的一种查找ELF文件中符号信息的方法实施例流程图;图2为本发明提供的一种查找ELF文件中符号信息的系统实施例结构图。【具体实施方式】[0012]本发明给出了一种查找ELF文件中符号信息的方法及系统,为了使本
技术领域
的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:本发明首先提供了一种查找ELF文件中符号信息的方法,如图1所示,包括:S101读取ELF文件,获取文件头部结构;S102解析文件头部结构,获取ProgramHeader;从文件头部结构中获得段偏移、段表节点大小和段表节点个数;S103解析ProgramHeader,获取DYNAMICSegment;当ProgramHeader中的p_type为PT_DYNAMIC时,该Segment为DYNAMICSegment,此时ProgramHeader中的p_offset和p_filesz为DYNAMICSegment的段偏移和段大小;S104解析DYNAMICSegment,获取符号表;当DYNAMICSegment中节点d_tag为DT_SYMTAB时,该节点联合结构中的d_ptr为符号表偏移;S105解析符号表,得到符号名、符号类型、起始偏移及大小信息。[0013]优选地,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息;当DYNAMICSegment中节点d_tag为DT_HASH时,该节点联合结构中的d_ptr为哈希表偏移;当DYNAMICSegment中节点d_tag为ST_STRTAB时,该节点联合结构中的d_ptr为字符串表;字符串表中储存符号名,Hash表用于找到符号表大小。[0014]本发明还提供了一种查找ELF文件中符号信息的系统,如图2所示,包括:读取文件模块201,用于读取ELF文件,获取文件头部结构;解析头部结构模块202,用于解析文件头部结构,获取ProgramHeader;解析ProgramHeader模块203,用于解析ProgramHeader,获取DYNAMICSegment;解析DYNAMICSegment模块204,用于解析DYNAMICSegment,获取符号表;解析符号表模块205,用于解析符号表,得到符号名、符号类型、起始偏移及大小信息。[0015]优选地,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。[0016]综上所述,本发明涉及一种查找ELF文件中符号信息的方法。本方法通过读取ELF文件的头部结构,从文件的头部结构中提取段偏移、段表节点大小和段表节点个数信息从而找到DYNAMICSegment,再通过遍历DYNAMICSegment找到符号表、Hash表和字符串表,解析符号表,此时可以得到符号名、符号类型、起始偏移及大小信息。传统的解析节信息的方法只能对正常的ELF文件有效,直接解析其头部中描述符号表信息的节信息部分获得符号信息。而经过特殊处理的ELF文件其符号表的节信息部分缺失,则上述方法无法解析到该ELF文件的符号表,导致了常见的解析方法失效。本发明针对一般节信息缺失的ELF文件,可有效的找到其符号表,进而找到其符号信息。[0017]以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。【主权项】1.一种查找ELF文件中符号信息的方法,其特征在于:读取ELF文件,获取文件头部结构;解析文件头部结构,获取ProgramHeader;解析ProgramHeader,获取DYNAMICSegment;解析DYNAMICSegment,获取符号表;解析符号表,得到符号名、符号类型、起始偏移及大小信息。2.如权利要求1所述的方法,其特征在于,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。3.一种查找ELF文件中符号信息的系统,其特征在于:读取文件模块,用于读取ELF文件,获取文件头部结构;解析头部结构模块,用于解析文件头部结构,获取ProgramHeader;解析ProgramHeader模块,用于解析ProgramHeader,获取DYNAMICSegment;解析DYNAMICSegment模块,用于解析DYNAMICSegment,获取符号表;解析符号表模块,用于解析符号表,得到符号名、符号类型、起始偏移及大小信息。4.如权利要求3所述的系统,其特征在于,还包括:解析DYNAMICSegment时,获取Hash表和字符串表,利用Hash表和字符串表辅助查找符号表中的符号信息。【专利摘要】本发明公开了一种查找ELF文件中符号信息的方法及系统,首先读取ELF文件,获取文件头部结构,解析文件头部结构获取Program?Header,根据Program?Header可找到DYNAMIC?Segment,遍历DYNAMIC?Segment获得符号表、Hash表和字符串表,最终解析符号表得到符号名、符号类型、起始偏移及大小信息。通过本方法解决了传统的解析方法只对正常的ELF文件有效,对经过特殊处理,缺失节信息的ELF文件则无法找到其符号信息的技术问题。【IPC分类】G06F17/30【公开号】CN105468661【申请号】CN201410844838【发明人】徐浩,袁海涛,潘宣辰【申请人】武汉安天信息技术有限责任公司【公开日】2016年4月6日【申请日】2014年12月31日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1