[发明专利]基于动态链接符号表的ELF文件相似性比对方法在审
申请号: | 202210639305.1 | 申请日: | 2022-06-07 |
公开(公告)号: | CN114995831A | 公开(公告)日: | 2022-09-02 |
发明(设计)人: | 陶金龙;冯大成;张建伟;李浩宇;张霄霄;杨波 | 申请(专利权)人: | 北京计算机技术及应用研究所 |
主分类号: | G06F8/52 | 分类号: | G06F8/52 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 王雪芬 |
地址: | 100854*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 动态 链接 符号 elf 文件 相似性 方法 | ||
本发明涉及一种基于动态链接符号表的ELF文件相似性比对方法,属于软件二进制代码溯源分析技术领域。该比对方法通过ELF文件解析,提取并比对ELF文件动态链接符号表,完成了ELF文件相似性比对和相似度计算。该方法主要是为Unix/Linux操作系统下可执行文件、目标代码、共享库等ELF文件溯源提供技术手段,具有良好的鲁棒性、较高的准确性和比对效率,同时兼容32位和64位ELF文件。
技术领域
本发明属于软件二进制代码溯源分析技术领域,具体涉及一种基于动态链接符号表的ELF文件相似性比对方法。
背景技术
软件代码溯源分析是开展软件组成和自主性分析的重要手段。软件代码溯源分析的核心和关键是代码相似性比对技术。代码溯源分析包括源代码溯源和二进制代码溯源两种方法。软件源代码是按照程序设计语言规范书写的文本文件,是一系列人可读的计算机语言指令,源代码溯源方法已经非常成熟。然而,商业软件普遍采用“闭源”方式,只提供编译后的二进制代码,软件源代码通常无法获取,从而无法通过源代码相似性比对,实现目标软件和商业“闭源”软件的溯源。
ELF(Executable and Linking Format)可执行链接格式最初是由Unix系统实验室(Unix System Laboratories,USL)作为应用程序二进制接口(Application BinaryInterface,ABI)开发并发布的。Linux操作系统也采用ELF作为二进制文件、可执行文件、目标代码、共享库,以及核心转储格式文件的文件格式。商业“闭源”软件通常将软件核心功能和关键算法封装成可执行文件、目标代码、共享库等ELF文件,对外仅提供动态链接调用接口,而不开放源代码,从而起到保护软件的目的。
ELF文件通常都无法反编译出源代码,只能反汇编出汇编代码。基于ELF文件反汇编后的汇编代码溯源存在较大问题,如同一份软件源代码经过不同编译器或编译选项后得到的ELF文件,再经过反汇编得到的汇编代码就存在不同程度的差异;软件源代码在编译过程中往往会链接许多公共库代码,反汇编后会增加许多代码量,这无疑会给基于汇编代码的软件溯源造成巨大干扰。
动态链接符号表中包含可执行文件、目标代码、共享库等ELF文件向外暴露的动态链接调用接口,而且一般不会随着编译器或编译选项的变化而变化。在软件更新升级过程中,为了保持可执行文件、目标代码、共享库等ELF文件的向前兼容性,ELF对外暴露的动态链接调用接口也会保持稳定。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何设计一种基于动态链接符号表的ELF文件相似性比对方法,为Unix/Linux操作系统下可执行文件、目标代码、共享库等ELF文件溯源提供技术手段,解决无法通过软件源代码溯源商业“闭源”软件的问题。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于动态链接符号表的ELF文件相似性比对方法,包括以下步骤:
第一步,解析ELF文件,为提取动态链接符号表准备条件;
第二步,从ELF文件中提取动态链接符号表;
第三步,比对动态链接符号表;
第四步,基于第三步的比对结果,计算ELF文件的相似度。
优选地,第一步中,依据ELF文件链接视图,按照顺序对ELF头、节头表、节进行解析。
优选地,第一步的解析过程具体如下:
(1)解析ELF头
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京计算机技术及应用研究所,未经北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210639305.1/2.html,转载请声明来源钻瓜专利网。