DeClassifier:面向优化后 C++ 二进制的类继承推断引擎
密码学与安全
2019-02-19 v2
摘要
从 C++ 二进制文件中恢复类继承具有若干安全益处,包括反编译和程序加固等问题。得益于 C++ 标准规定的优化准则,商业 C++ 二进制文件往往经过优化。虽然当前最先进的类继承推断方案能有效处理未优化代码,但其效果受优化影响。特别是由于优化导致的构造函数内联——或更糟的排除——使得类继承恢复颇具挑战。此外,尽管 MARX 等现代方案能成功地将继承子树中的类分组,却无法确立继承的方向性,而这对安全相关应用(如反编译)至关重要。我们使用二进制分析平台(BAP)实现了 DeClassifier 原型,并在 gcc 多种优化设置下编译的 16 个二进制文件上评估了 DeClassifier。我们表明:(1) DeClassifier 在 O0 和 O2 优化下分别能恢复类层次树中 94.5% 和 71.4% 的真正向边;(2) 构造函数+析构函数分析的组合比仅构造函数分析提供更好的推断。
引用
@article{arxiv.1901.10073,
title = {DeClassifier: Class-Inheritance Inference Engine for Optimized C++ Binaries},
author = {Rukayat Ayomide Erinfolami and Aravind Prakash},
journal= {arXiv preprint arXiv:1901.10073},
year = {2019}
}
备注
13 pages of main paper including references, 1 page of appendix, 2 figures and 10 tables