PEM: Representing Binary Program Semantics for Similarity Analysis via a Probabilistic Execution Model
Open Access
- 30 November 2023
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 401-412
Abstract
Binary similarity analysis determines if two binary executables are from the same source program. Existing techniques leverage static and dynamic program features and may utilize advanced Deep Learning techniques. Although they have demonstrated great potential, the community believes that a more effective representation of program semantics can further improve similarity analysis. In this paper, we propose a new method to represent binary program semantics. It is based on a novel probabilistic execution engine that can effectively sample the input space and the program path space of subject binaries. More importantly, it ensures that the collected samples are comparable across binaries, addressing the substantial variations of input specifications. Our evaluation on 9 real-world projects with 35k functions, and comparison with 6 state-of-the-art techniques show that PEM can achieve a precision of 96% with common settings, outperforming the baselines by 10-20%.Keywords
All Related Versions
Funding Information
- DARPA VSPELLS (HR001120S0058)
- IARPA TrojAI (W911NF-19-S-0012)
- NSF (1901242, 1910300)
- ONR (N000141712045, N000141410468, N000141712947)
This publication has 36 references indexed in Scilit:
- Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity Detection2017
- Towards robust instruction-level trace alignment of binary code2017
- SPAIN: Security Patch Analysis for Binaries towards Understanding the Pain and Pills2017
- Semantics-Based Obfuscation-Resilient Binary Code Similarity Comparison with Applications to Software and Algorithm Plagiarism DetectionIEEE Transactions on Software Engineering, 2017
- BinGo: cross-architecture cross-OS binary search2016
- Statistical similarity of binaries2016
- SourcererCC2016
- Cross-Architecture Bug Search in Binary Executables2015
- Leveraging semantic signatures for bug search in binary programs2014
- Locating faults through automated predicate switching2006