Cross-Inlining Binary Function Similarity Detection

注:在阅读该论文时顺便参考了作者团队的分享视频:【ICSE 2024论文预讲会-第二期-下午-哔哩哔哩】 https://b23.tv/XUVAPy3 在这个视频的末尾最后一个


一.introducion

计算下面两个函数的相似度:

查询函数:脆弱函数,重用函数

目标函数:商用软件中的函数

**函数内联:**函数(a)是一个脆弱函数,易被攻击,函数(b) 和(c)都内联了函数(a) ,所以他们也变成易被攻击的函数。

**problem:**相似度小于50%->对内联函数的相似性判断不准(内联关系太错综复杂了)

本文研究解决三个问题:

二.backgroud

?交叉内联

跨内联(Cross-Inlining):在不同的编译环境中,同一个源代码函数可能因为内联而产生不同的二进制表示。跨内联相似性检测旨在识别这些不同二进制表示之间的相似性。

左图:一般的函数调用,源函数在编译之后 ,会生成两个二进制函数:(Main和myfunction)

Main调用myfunction

右图:函数内联,myfunction的函数体被嵌入到了Main函数中,对应生成的二进制函数只有Main函数,没有myfunction

->引入了跨内联场景下的新问题

因为:首先在检测二进制函数的相似性的时候一般先要将他们反汇编成目标函数,通过语义来进行相似性比较。

1.Binary Function Similarity Detection(二进制相似度检测的研究方向们)

1)交叉优化二进制相似性检测工作:检测由相同源函数编译但具有不同优化(语法会不同)的二进制函数的相似性。

2)交叉编译器检测工作:检测由不同编译器编译的二进制函数的相似性。

3)跨架构检测工作:检测编译到不同架构的二进制函数的相似性。

4)目标:交叉内联二元函数相似性检测

2.Function Inlining(函数内联定义)

编译器在编译时将函数调用直接替换为函数体代码,从而消除函数调用的开销。代码直接嵌入到调用点,而不是通过函数调用进行。这可以减少函数调用的开销

3.Cross-Inlining Binary Similarity Detection(交叉内联函数)

(1)函数映射构建

研究者们进一步为这两个数据集构建了从二进制函数到源代码函数的映射(binary2source function mappings)。这个过程包括:

  • 从.debug_line节提取地址到行的映射。
  • 提取地址到二进制函数和行到源代码函数的关系。
  • 通过将二进制函数与它们映射的源代码函数对齐,构建binary2source函数映射。
(2)内联函数识别

通过binary2source函数映射,可以通过它们映射的源代码函数数量来识别内联的二进制函数。如果一个二进制函数映射到多个源代码函数,它就被认为是内联函数。在Dataset-NoInlining中,大多数二进制函数映射到一个源代码函数。

跨内联函数对:Dataset-Inlining中的CMS_decrypt和Dataset-NoInlining中的do_free_upto。在内联和非内联数据集中,通过桥函数关联起来的二进制函数对。

(3)三种交叉内联模式

注:标红的是桥函数(bridge function)。模式是根据桥函数(bridge function)在源代码函数调用图(FCG)中的位置来分类的

~Leaf-Inlining(叶节点内联):

桥函数位于调用链的末尾,没有被其他函数调用

~Root-Inlining(根节点内联):

在树状结构中,这样的节点类似于根,因为它是调用链的起点。

~InternalInlining(内部节点内联):

桥函数(中间的SF)既被其他函数调用,也调用了其他函数。在树状结构中,这样的节点位于调用链的中间,类似于树的内部节点。

跨内联(Cross-Inlining):在不同的编译环境中,同一个源代码函数可能因为内联而产生不同的二进制表示。跨内联相似性检测旨在识别这些不同二进制表示之间的相似性。

三.Method

1.ACFG 语义抽取

用GNN对ACFG进行embedding

2.model training

构造数据集:

case bridge(key):{

equal:非内联场景下的do_free_upto:\[\]

cross-inlining:被内联到的二进制函数集合:\[\]

}

正样本: equal中选一个,cross-inlining中选一个

负样本: equal中选一个,不在cross-inlining中选(但是在另外里面发生过内联)一个

使用基于边界的loss优化神经网络,达到分类的效果

基于三种不同的mode进行训练,threshold=0.55

相关推荐
云和数据.ChenGuang4 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
西西木科技丨Shopify开发机构5 小时前
CalDigit TS4案例:AI产品图的Shopify整站接入与验收
人工智能·shopify·独立站
2601_965448875 小时前
AI视频制作:做系列节气民俗视频音色不统一,AI 音色克隆省事的方法
人工智能·机器学习·音视频
美狐美颜SDK开放平台5 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
HRaitest5 小时前
秋招技术岗招聘提效:三类 AI 招聘方案的技术底层与选型逻辑
大数据·人工智能·求职招聘·ai-native
天远数科6 小时前
零信任架构实战:基于天远企业股权变更构建自动化商业银行对公授信存续期股权异动与资产抽逃预警网关
运维·人工智能·架构·自动化
车软学堂6 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
海盗12346 小时前
AI 新闻日报 10-28:Atria Dawn 完整版开源、Cursor Agent SDK 转正、Genie 4 实时世界模型
人工智能·机器人·开源·人工智能aigc
志尊宝7 小时前
AI原生前端开发(035):AI时代的工程化最佳实践总结
人工智能·ai-native
冬奇Lab7 小时前
一天一个开源项目(第251篇):Claude SEO —— 装进 Claude Code 的 SEO 审计团队,26 个子技能 + 19 个专家 Agent 并行体检网站
人工智能·开源