Towards robust instruction-level trace alignment of binary code
Authors:
- 1 October 2017
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 342-352
Abstract
Program trace alignment is the process of establishing a correspondence between dynamic instruction instances in executions of two semantically similar but syntactically different programs. In this paper we present what is, to the best of our knowledge, the first method capable of aligning realistically long execution traces of real programs. To maximize generality, our method works entirely on the machine code level, i.e. it does not require access to source code. Moreover, the method is based entirely on dynamic analysis, which avoids the many challenges associated with static analysis of binary code, and which additionally makes our approach inherently resilient to e.g. static code obfuscation. Therefore, we believe that our trace alignment method could prove to be a useful aid in many program analysis tasks, such as debugging, reverse-engineering, investigating plagiarism, and malware analysis. We empirically evaluate our method on 11 popular Linux programs, and show that it is capable of producing meaningful alignments in the presence of various code transformations such as optimization or obfuscation, and that it easily scales to traces with tens of millions of instructions.Keywords
This publication has 19 references indexed in Scilit:
- MalGene2015
- Cross-Architecture Bug Search in Binary Executables2015
- Semantics-based obfuscation-resilient binary code similarity comparison with applications to software plagiarism detection2014
- BinSlayer2013
- A first step towards algorithm plagiarism detection2012
- BinHunt: Automatically Finding Semantic Differences in Binary Programs2008
- Matching Control Flow of Program Versions2007
- Matching execution histories of program versions2005
- Pin2005
- Identification of common molecular subsequencesJournal of Molecular Biology, 1981