一种支持多架构的可执行文件静态插桩技术框架制造技术

技术编号:28672424 阅读:16 留言:0更新日期:2021-06-02 02:48
本发明专利技术公开了一种支持多架构的可执行文件静态插桩技术框架,涉及计算机网络安全领域。由顶层模块(指令原语组合模块)、底层模块(指令原语翻译模块)与命令行工具组成。顶层模块使用各种指令原语构建完整的静态插桩代码,并将其写入可执行文件新增的代码节中;底层模块负责对接架构指令集,在所有支持的架构下找到合适的指令序列实现各条顶层部分所需的指令原语;命令行工具负责接收插桩请求信息,并传递给顶层部分。本发明专利技术具有良好的扩展灵活性,能够稳定可靠地实现对当前五种主流架构下的可执行文件的静态插桩,且与已有的同类技术框架相比在空间开销与时间开销上的性能表现更佳。

【技术实现步骤摘要】
一种支持多架构的可执行文件静态插桩技术框架
本专利技术涉及计算机网络安全领域,尤其涉及一种支持多架构的可执行文件静态插桩技术框架。
技术介绍
可执行文件重写技术指的是在没有源代码的前提下,对已编译甚至可能已经过链接的可执行文件进行修改使得所修改的可执行文件在程序逻辑被修改的情况下仍可正常运行。绝大多数软件,尤其是商业软件,均以编译型语言开发完成。企业为了保护自己的核心技术,分发给用户的往往是编译完成的可执行文件,用户只能以可执行文件的形式运行软件。因此在源代码无法获取的情况下,当使用者需要对程序行为进行某些修改时,可执行文件重写技术则具有极为重要的意义。而起初研究该技术的动机仅仅是在程序运行过程中更改程序的某些部分,修复bug,保证其可持续正常运行。随着可执行文件重写技术的不断发展,它的应用领域不断拓宽,能够在程序加固、漏洞修补与检测和程序优化与监控等场景中发挥重要作用。因此,本领域的技术人员致力于开发一种支持多架构的可执行文件静态插桩技术框架,提升插桩程序的空间开销和运行性能。
技术实现思路
有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是对静态插桩中涉及到的各种指令行为进行架构无关的标准化,抽象为各种标准底层指令行为,即“指令原语”,再将指令原语在各个架构下映射为相应的一条或多条指令组成的指令序列,从而实现优化性能的、支持多架构的静态插桩工具。为实现上述目的,本专利技术提供了一种支持多架构的可执行文件静态插桩技术框架,包括顶层模块(指令原语组合模块)、底层模块(指令原语翻译模块)与命令行工具;所述顶层模块使用各种指令原语构建完整的静态插桩代码,并将其写入可执行文件新增的代码节中;所述底层模块负责对接架构指令集,在所有支持的架构下找到合适的指令序列实现所述顶层模块的指令原语;所述命令行工具负责接收插桩请求信息,并传递给所述顶层模块。进一步地,所述指令原语是完成架构共有的特定行为的机器指令序列。进一步地,所述特定行为包括分配栈空间、释放栈空间。进一步地,所述顶层模块包括预备代码块、模式代码块和插桩代码块。进一步地,所述预备代码块的功能实现由指令原语完成。进一步地,所述模式代码块的功能实现由指令原语完成。进一步地,所述插桩代码块的功能实现由指令原语完成。进一步地,所述插桩请求信息包括插桩代码、插桩位置。进一步地,所述命令行工具用C++语言编写。进一步地,所述可执行文件是X86架构、X86-64架构、MIPS架构、ARM架构或AArch64架构下的ELF文件。在本专利技术的较佳实施方式中,本专利技术提供了一种支持多架构的可执行文件静态插桩技术框架,由顶层模块(指令原语组合模块)、底层模块(指令原语翻译模块)与命令行工具组成。本专利技术在已有的可执行文件重写技术研究基础上设计并实现了一个高效而通用的静态插桩框架,且支持包括X86、X86-64等CISC架构和ARM、AArch64和MIPS等RISC架构的多种主流架构。该框架对静态插桩中涉及到的各种指令行为进行架构无关的标准化,抽象为各种标准底层指令行为,即“指令原语”。本专利技术将静态插桩的各个步骤分解为多条指令原语,再将指令原语在各个架构下映射为相应的一条或多条指令组成的指令序列,从而实现支持多架构的静态插桩工具。为了追求高性能,在实现指令原语时该框架尽可能地选择更快速的指令并避免多余的指令,遵循最小化原则。依托于指令原语,本专利技术提出将顶层与底层模块分离的静态插桩框架设计思路。顶层实现与架构无关,只负责调用指令原语以完成修改原程序指令和新增插桩指令等工作。底层实现无须考虑静态插桩如何进行,只需完成各种指令原语的架构具体实现和一些架构相关的工具函数接口实现即可。支持多架构的可执行文件静态插桩技术,包括:1)顶层模块(指令原语组合模块):使用各种指令原语构建完整的静态插桩代码,并将其写入可执行文件新增的代码节中;2)底层模块(指令原语翻译模块):对接架构指令集,在所有支持的架构下找到合适的指令序列实现各条顶层部分所需的指令原语;3)命令行工具:接收插桩代码、插桩位置等必要插桩请求信息,并传递给顶层部分。本专利技术引入了“指令原语”这一概念,实现了顶层的静态插桩过程设计与底层不同架构下指令序列设计的分离。本专利技术具有良好的扩展灵活性,只需在底层部分添加各条指令原语的具体实现即可完成对新架构的支持。本专利技术在保证添加新架构支持的灵活性的前提下,实现了对全部五种主流架构的支持,是公开研究中唯一支持如此多种架构的静态插桩技术框架。本专利技术通过创新性的指令级代码复用大幅节省了静态插桩产生的额外空间开销,提升了插桩程序的运行性能。本专利技术与现有技术相比较,具有如下显而易见的实质性特点和显著优点:本专利技术的支持多架构的静态插桩技术框架,引入了“指令原语”这一概念,实现了顶层的静态插桩过程设计与底层不同架构下指令序列设计的分离。基于这样的设计,本框架具有良好的扩展灵活性,只需在底层部分添加各条指令原语的具体实现即可完成对新架构的支持。此外,在顶层部分的设计中,本文通过创新性的指令级代码复用大幅节省了静态插桩产生的额外空间开销,提升了插桩程序的运行性能。本框架能够稳定可靠地实现对当前五种主流架构下的可执行文件的静态插桩,且与已有的同类技术框架相比在空间开销与时间开销上的性能表现更佳。以下将结合附图对本专利技术的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本专利技术的目的、特征和效果。附图说明图1是本专利技术的一个较佳实施例的多架构静态插桩框架架构示意图;图2是本专利技术的一个较佳实施例的顶层模块(指令原语组合模块)示意图。具体实施方式以下参考说明书附图介绍本专利技术的多个优选实施例,使其
技术实现思路
更加清楚和便于理解。本专利技术可以通过许多不同形式的实施例来得以体现,本专利技术的保护范围并非仅限于文中提到的实施例。在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本专利技术并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。本专利技术的一个较佳实施例,由顶层模块(指令原语组合模块)、底层模块(指令原语翻译模块)与命令行工具组成。如图1所示,本专利技术的一个较佳实施例包括:1)顶层模块(指令原语组合模块):使用各种指令原语构建完整的静态插桩代码,并将其写入可执行文件新增的代码节中;2)底层模块(指令原语翻译模块):对接架构指令集,在所有支持的架构下找到合适的指令序列实现各条顶层部分所需的指令原语;3)命令行工具:接收插桩代码、插桩位置等必要插桩请求信息,并传递给顶层部分。所述的指令原语是指完成各架构共有的特定行为(如分配栈空间、释放栈空间)的机器指令序列,它是该技术实现顶层与底层设计解耦的关键。这样一来底层部分完全无需知道静态本文档来自技高网
...

【技术保护点】
1.一种支持多架构的可执行文件静态插桩技术框架,其特征在于,包括顶层模块(指令原语组合模块)、底层模块(指令原语翻译模块)与命令行工具;/n所述顶层模块使用各种指令原语构建完整的静态插桩代码,并将其写入可执行文件新增的代码节中;/n所述底层模块负责对接架构指令集,在所有支持的架构下找到合适的指令序列实现所述顶层模块的指令原语;/n所述命令行工具负责接收插桩请求信息,并传递给所述顶层模块。/n

【技术特征摘要】
1.一种支持多架构的可执行文件静态插桩技术框架,其特征在于,包括顶层模块(指令原语组合模块)、底层模块(指令原语翻译模块)与命令行工具;
所述顶层模块使用各种指令原语构建完整的静态插桩代码,并将其写入可执行文件新增的代码节中;
所述底层模块负责对接架构指令集,在所有支持的架构下找到合适的指令序列实现所述顶层模块的指令原语;
所述命令行工具负责接收插桩请求信息,并传递给所述顶层模块。


2.如权利要求1所述的支持多架构的可执行文件静态插桩技术框架,其特征在于,所述指令原语是完成架构共有的特定行为的机器指令序列。


3.如权利要求2所述的支持多架构的可执行文件静态插桩技术框架,其特征在于,所述特定行为包括分配栈空间、释放栈空间。


4.如权利要求1所述的支持多架构的可执行文件静态插桩技术框架,其特征在于,所述顶层模块包括预备代码块、模式代码块和插桩代码块。


...

【专利技术属性】
技术研发人员:邹福泰
申请(专利权)人:天桐苏州网络科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1