NeuDep: Neural Binary Memory Dependence Analysis
Not on the map. Why?
Abstract (arXiv)
Determining whether multiple instructions can access the same memory location is a critical task in binary analysis. It is challenging as statically computing precise alias information is undecidable in theory. The problem aggravates at the binary level due to the presence of compiler optimizations and the absence of symbols and types. Existing approaches either produce significant spurious dependencies due to conservative analysis or scale poorly to complex binaries. We present a new machine-learning-based approach to predict memory dependencies by exploiting the model's learned knowledge about how binary programs execute. Our approach features (i) a self-supervised procedure that pretrains a neural net to reason over binary code and its dynamic value flows through memory addresses, followed by (ii) supervised finetuning to infer the memory dependencies statically. To facilitate efficient learning, we develop dedicated neural architectures to encode the heterogeneous inputs (i.e., code, data values, and memory addresses from traces) with specific modules and fuse them with a composition learning strategy. We implement our approach in NeuDep and evaluate it on 41 popular software projects compiled by 2 compilers, 4 optimizations, and 4 obfuscation passes. We demonstrate that NeuDep is more precise (1.5x) and faster (3.5x) than the current state-of-the-art. Extensive probing studies on security-critical reverse engineering tasks suggest that NeuDep understands memory access patterns, learns function signatures, and is able to match indirect calls. All these tasks either assist or benefit from inferring memory dependencies. Notably, NeuDep also outperforms the current state-of-the-art on these tasks.
Key facts. Cited by 3 papers in the map (data through 7 Oct 2026). Builds on 40 of its 108 references that are in the map. First posted on arXiv 4 Oct 2022.
Builds on
40 of 108 references.
References · 40
- 2017Attention Is All You Needcited by 59,932
- 2018BERT: Pre-training of Deep Bidirectional Transformers for Language Understandingcited by 40,204
- 2021Show Your Work: Scratchpads for Intermediate Computation with Language Modelscited by 871
- 2015Highway Networkscited by 257
- 2017A Survey of Machine Learning for Big Code and Naturalnesscited by 220
- 2021Leveraging Automated Unit Tests for Unsupervised Code Translationcited by 82
- 2021A Syntax-Guided Edit Decoder for Neural Program Repaircited by 57
- 2020Self-Supervised Contrastive Learning for Code Retrieval and Summarization via Semantic-Preserving Transformationscited by 49
- 2021PalmTree: Learning an Assembly Language Model for Instruction Embeddingcited by 49
- 2022CodeFill: Multi-token Code Completion by Jointly Learning from Structure and Naming Sequencescited by 49
- 2021On the Evaluation of Neural Code Summarizationcited by 47
- 2020Trex: Learning Execution Semantics from Micro-Traces for Binary Similaritycited by 34
28 more
- 2019TypeWriter: Neural Type Prediction with Search-based Validationcited by 32
- 2018A Grammar-Based Structural CNN Decoder for Code Generationcited by 29
- 2014Learning Natural Coding Conventionscited by 28
- 2017Dynamic Neural Program Embedding for Program Repaircited by 23
- 2020InferCode: Self-Supervised Learning of Code Representations by Predicting Subtreescited by 23
- 2021A Survey on Machine Learning Techniques for Source Code Analysiscited by 23
- 2021An Empirical Study on the Usage of BERT Models for Code Completioncited by 22
- 2020XDA: Accurate, Robust Disassembly with Transfer Learningcited by 21
- 2021Challenging Machine Learning-based Clone Detectors via Semantic-preserving Code Transformationscited by 15
- 2020Review4Repair: Code Review Aided Automatic Program Repairingcited by 13
- 2022Cross-Language Binary-Source Code Matching with Intermediate Representationscited by 13
- 2016Learning Python Code Suggestion with a Sparse Pointer Networkcited by 12
- 2020CRaDLe: Deep Code Retrieval Based on Semantic Dependency Learningcited by 12
- 2020Neural Software Analysiscited by 11
- 2021GraphCode2Vec: Generic Code Embedding via Lexical and Program Dependence Analysescited by 11
- 2020Modeling Functional Similarity in Source Code with Graph-Based Siamese Networkscited by 10
- 2020Deep Learning & Software Engineering: State of Research and Future Directionscited by 9
- 2021Nalin: Learning from Runtime Behavior to Find Name-Value Inconsistencies in Jupyter Notebookscited by 6
- 2018oo7: Low-overhead Defense against Spectre Attacks via Program Analysiscited by 4
- 2020Binary-level Directed Fuzzing for Use-After-Free Vulnerabilitiescited by 4
- 2021Data-Driven Synthesis of Provably Sound Side Channel Analysescited by 4
- 2021On Introducing Automatic Test Case Generation in Practice: A Success Story and Lessons Learnedcited by 4
- 2021Learning Off-By-One Mistakes: An Empirical Studycited by 3
- 2021DeepMerge: Learning to Merge Programscited by 3
- 2022μBERT: Mutation Testing using Pre-Trained Language Modelscited by 3
- 2021BERT2Code: Can Pretrained Language Models be Leveraged for Code Search?cited by 2
- 2017FirmUSB: Vetting USB Device Firmware using Domain Informed Symbolic Executioncited by 1
- 2021AI-based Blackbox Code Deobfuscation: Understand, Improve and Mitigatecited by 1
Built on by
Citing papers per year: 2023: 1; 2024: 1; 2025: 0; 2026: 1.
3 papers.