一句话:提出 FunProbe,利用概率推断融合 16 个架构无关线索,高效准确地从二进制中识别函数。
现有函数识别技术大多针对特定 CPU 架构编译的二进制,而近期深度学习方法虽理论上有跨架构能力,却需要大量训练与推理计算资源,且缺乏可解释性。本文提出 FunProbe,一个基于概率推断的高效二进制函数识别系统。作者识别出 16 个架构无关的函数识别线索,并设计了一种有效方法在概率框架下将它们组合起来。评估在包含 19,872 个真实世界二进制、覆盖六种主流 CPU 架构的大型数据集上进行。结果表明,FunProbe 在准确率上优于所测试的五个当前最优工具,且平均仅需 6 秒即可分析一个二进制。特别地,FunProbe 识别函数的平均速度比在推理阶段使用 GPU 的当前最优深度学习工具 XDA 快 6 倍。
Current function identification techniques have been mostly focused on a specific set of binaries compiled for a specific CPU architecture. While recent deep-learning-based approaches theoretically can handle binaries from different architectures, they require significant computation resources for training and inference, making their use less practical. Furthermore, due to the lack of interpretability of such models, it is fundamentally difficult to gain insight from them. Hence, in this paper, we propose FunProbe, an efficient system for identifying functions from binaries using probabilistic inference. In particular, we identify 16 architecture-neutral hints for function identification, and devise an effective method to combine them in a probabilistic framework. We evaluate our tool on a large dataset consisting of 19,872 real-world binaries compiled for six major CPU architectures. The results are promising. FunProbe shows the best accuracy compared to five state-of-the-art tools we tested, while it takes only 6 seconds on average to analyze a single binary. Notably, FunProbe is 6× faster on average in identifying functions than XDA, a state-of-the-art deep-learning tool that leverages GPU in its inference phase.