推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

静态二进制插桩技术详解.docx

资料介绍

静态二进制插桩

一、基本概念

什么是静态二进制插桩

静态二进制插桩(Static Binary Instrumentation,简称SBI)是一种不依赖源代码,直接对编译完成的二进制可执行文件进行修改,在目标程序的指定位置插入自定义代码,实现对目标程序行为监控、功能扩展或者数据采集的二进制分析技术。和动态插桩在程序运行时内存中完成修改不同,静态二进制插桩的修改操作直接作用于磁盘上的二进制文件,修改后的程序可以独立运行,不需要额外的运行时支撑框架。

二、核心原理

基本流程

静态二进制插桩的核心流程可以分为四个步骤:

1. 二进制解析:解析目标二进制文件的格式,获取段信息、符号表、导入导出表、重定位表等结构,识别出可插入代码的空闲区间,同时定位需要插桩的目标地址。

2. 指令分析:对插桩点附近的指令进行反汇编,分析指令长度、指令之间的依赖关系,确定被截断指令的长度,计算空间占用。

3. 桩代码生成与空间分配:根据插桩需求生成自定义的桩代码,分配空闲存储区域存放桩代码,处理因为插入桩代码带来的地址偏移问题。

4. 原指令修复与链接:在插桩点写入跳转指令跳转到桩代码,修复原程序被截断的指令,在桩代码执行完成后跳转回原程序正常流程,最后把修改后的内容写回二进制文件。

关键技术点

1. 空闲空间利用:常见的空闲空间来源包括二进制文件的段对齐间隙、文件头部的保留区域、未使用的代码段空隙、重定位表的冗余空间等,也可以通过新增段的方式存储桩代码。

2. 分支偏移修正:插入代码会改变部分指令的相对偏移,需要对插桩点前后的相对跳转、条件跳转、调用指令的偏移量进行修正,避免程序运行出错。


部分文件列表

文件名 大小
静态二进制插桩技术详解.docx 16K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载