Using Logic Programming to Recover C plus plus Classes and Methods from Compiled Executables

被引:15
作者
Schwartz, Edward J. [1 ]
Cohen, Cory F. [1 ]
Duggan, Michael [1 ]
Gennari, Jeffrey [1 ]
Havrilla, Jeffrey S. [1 ]
Hines, Charles [1 ]
机构
[1] Carnegie Mellon Univ, Inst Software Engn, Pittsburgh, PA 15213 USA
来源
PROCEEDINGS OF THE 2018 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY (CCS'18) | 2018年
基金
美国安德鲁·梅隆基金会;
关键词
software reverse engineering; binary analysis; malware analysis;
D O I
10.1145/3243734.3243793
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
High-level C++ source code abstractions such as classes and methods greatly assist human analysts and automated algorithms alike when analyzing C++ programs. Unfortunately, these abstractions are lost when compiling C++ source code, which impedes the understanding of C++ executables. In this paper, we propose a system, OOAnalyzer, that uses an innovative new design to statically recover detailed C++ abstractions from executables in a scalable manner. OOAnalyzer's design is motivated by the observation that many human analysts reason about C++ programs by recognizing simple patterns in binary code and then combining these findings using logical inference, domain knowledge, and intuition. We codify this approach by combining a lightweight symbolic analysis with a flexible Prolog-based reasoning system. Unlike most existing work, OOAnalyzer is able to recover both polymorphic and non-polymorphic C++ classes. We show in our evaluation that OOAnalyzer assigns over 78% of methods to the correct class on our test corpus, which includes both malware and real-world software such as Firefox and MySQL. These recovered abstractions can help analysts understand the behavior of C++ malware and cleanware, and can also improve the precision of program analyses on C++ executables.
引用
收藏
页码:426 / 441
页数:16
相关论文
共 35 条
[1]  
Abadi M., 2005, P ACM C COMP COMM SE
[2]  
Anand Kapil, 2013, P ACM EUR C COMP SYS
[3]  
[Anonymous], P INT C ARCH SUPP PR
[4]  
[Anonymous], 2012, P IEEE S SEC PRIV OA
[5]  
*BOOST, 1998, BOOST C LIB
[6]  
Dewey D., 2012, P NETW DISTR SYST SE
[7]  
Dewey David, 2015, P IEEE C AV REL SEC
[8]  
Elsabagh Mohamed, 2017, P ACM AS C COMP COMM
[9]  
Fokin Alexander, 2011, P WORK C REV ENG WCR
[10]  
Fokin Alexander, 2010, P SOFTW MAINT REENG