[发明专利]基于动态链接符号表的ELF文件相似性比对方法在审
申请号: | 202210639305.1 | 申请日: | 2022-06-07 |
公开(公告)号: | CN114995831A | 公开(公告)日: | 2022-09-02 |
发明(设计)人: | 陶金龙;冯大成;张建伟;李浩宇;张霄霄;杨波 | 申请(专利权)人: | 北京计算机技术及应用研究所 |
主分类号: | G06F8/52 | 分类号: | G06F8/52 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 王雪芬 |
地址: | 100854*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 动态 链接 符号 elf 文件 相似性 方法 | ||
1.一种基于动态链接符号表的ELF文件相似性比对方法,其特征在于,包括以下步骤:
第一步,解析ELF文件,为提取动态链接符号表准备条件;
第二步,从ELF文件中提取动态链接符号表;
第三步,比对动态链接符号表;
第四步,基于第三步的比对结果,计算ELF文件的相似度。
2.如权利要求1所述的方法,其特征在于,第一步中,依据ELF文件链接视图,按照顺序对ELF头、节头表、节进行解析。
3.如权利要求2所述的方法,其特征在于,第一步的解析过程具体如下:
(1)解析ELF头
所有ELF文件都以ELF头开始,ELF头的数据结构为Elf32_Ehdr,具体数据结构定义的数组e_ident数组中,e_ident数组前4个字节ident[0]、ident[1]、ident[2]、ident[3]依次为0x7F、'E'、'L'、'F',标识目标文件为ELF文件;e_ident数组第5个字节ident[4]标识ELF文件位宽;e_ident数组中第5个字节之后的e_shoff、e_shnum、e_shentsize分别记录ELF文件中节头表的偏移量、节头表中表项数量和每个表项的大小;
(2)解析节头表
通过解析ELF头,已获得ELF文件中节头表的偏移量e_shoff、节头表中表项数量e_shnum和每个表项的大小e_shentsize,这为节头表解析提供了定位信息,即明确了从什么位置开始解析节头表;
ELF文件中节头表采用Elf32_Shdr结构体进行数据存储,Elf32_Shdr具体数据结构定义中,sh_name成员并非节名称,而是节名称的索引,通过该索引可以从“节头字符串表节”获得节真正名称;sh_type成员标识节类型,包括字符串表SHT_STRTAB、符号表SHT_SYMTAB、动态链接符号表SHT_DYNSYM,不同类型的节需要不同的解析方式;sh_size、sh_entsize成员分别表示节大小和节表项的大小,据此可计算出节中表项的数量,从而可以对节按照表项继续解析;sh_size、sh_entsize成员仅对符号表SHT_SYMTAB、动态链接符号表SHT_DYNSYM这些类型节有效;
(3)解析SHT_STRTAB节
SHT_STRTAB节即字符串表节,通过解析节头表,可获得SHT_STRTAB节偏移量sh_offset,节大小sh_size,从而为SHT_STRTAB节解析提供定位信息,即明确了从什么位置开始解析字符串表节;
ELF文件中可包含多个字符串表,包括名称为“.strtab”的字符串表和名称为“.dynstr”的动态链接字符串表,动态链接调用接口名称统一存放在名称为“.dynstr”的动态链接字符串表中;SHT_DYNSYM节中动态链接符号表并不存放动态链接调用接口真正名称,仅存放动态链接调用接口名称在动态链接字符串表中的索引;
字符串表包含以'\0'结尾的字符序列,称为字符串;字符串表第一个字节定义为一个空字符串,即'\0';字符串表的最后一个字节也定义为'\0',以确保所有的字符串都以'\0'结尾,索引为0的字符串在不同的上下文中可表示无名或者名字为'\0'的字符串;
对于SHT_DYNSYM节来说,可通过st_name指定的索引从字符串表中读取从st_name开始到'\0'截止的字符串;
(4)解析SHT_DYNSYM节
SHT_DYNSYM节存放动态链接符号表;通过解析节头表,已获得了SHT_DYNSYM节偏移量sh_offset,节大小sh_size,以及节中单个符号项的大小sh_entsize,这不仅为SHT_DYNSYM节解析提供了定位信息,同时也可通过“sh_size/sh_entsize”计算出节中符号项的数量;
SHT_DYNSYM节中符号项的数据结构按照ELF文件位宽分成Elf32_Sym和Elf64_Sym,具体结构定义中,SHT_DYNSYM节中符号项针对ELF文件的不同位宽,数据解析顺序也不相同,其中,st_name表示符号项名称在动态链接字符串表中的索引;st_info低4位表示符号绑定,用于确定链接可见性和行为;st_info高4位表示符号类型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京计算机技术及应用研究所,未经北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210639305.1/1.html,转载请声明来源钻瓜专利网。