Learning to Find Usages of Library Functions in Optimized Binaries
Not on the map. Why?
Abstract (arXiv)
Much software, whether beneficent or malevolent, is distributed only as binaries, sans source code. Absent source code, understanding binaries' behavior can be quite challenging, especially when compiled under higher levels of compiler optimization. These optimizations can transform comprehensible, "natural" source constructions into something entirely unrecognizable. Reverse engineering binaries, especially those suspected of being malevolent or guilty of intellectual property theft, are important and time-consuming tasks. There is a great deal of interest in tools to "decompile" binaries back into more natural source code to aid reverse engineering. Decompilation involves several desirable steps, including recreating source-language constructions, variable names, and perhaps even comments. One central step in creating binaries is optimizing function calls, using steps such as inlining. Recovering these (possibly inlined) function calls from optimized binaries is an essential task that most state-of-the-art decompiler tools try to do but do not perform very well. In this paper, we evaluate a supervised learning approach to the problem of recovering optimized function calls. We leverage open-source software and develop an automated labeling scheme to generate a reasonably large dataset of binaries labeled with actual function usages. We augment this large but limited labeled dataset with a pre-training step, which learns the decompiled code statistics from a much larger unlabeled dataset. Thus augmented, our learned labeling model can be combined with an existing decompilation tool, Ghidra, to achieve substantially improved performance in function call recovery, especially at higher levels of optimization.
Key facts. Cited by 5 papers in the map (data through 14 Oct 2026). First posted on arXiv 9 Mar 2021.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2021: 2; 2022: 0; 2023: 2; 2024: 0; 2025: 1.
5 papers.
- 2021Multilingual training for Software Engineeringcited by 43
- 2023Extending Source Code Pre-Trained Language Models to Summarise Decompiled Binariescited by 26
- 2021SYNFIX: Automatically Fixing Syntax Errors using Compiler Diagnosticscited by 8
- 2023Automating Code-Related Tasks Through Transformers: The Impact of Pre-trainingcited by 8
- 2025A Deep Dive into Function Inlining and its Security Implications for ML-based Binary Analysiscited by 1
- 2025A Deep Dive into Function Inlining and its Security Implications for ML-based Binary Analysis16 Dec 2025
- 2023Automating Code-Related Tasks Through Transformers: The Impact of Pre-training8 Feb 2023
- 2023Extending Source Code Pre-Trained Language Models to Summarise Decompiled Binaries4 Jan 2023
- 2021Multilingual training for Software Engineering3 Dec 2021
- 2021SYNFIX: Automatically Fixing Syntax Errors using Compiler Diagnostics29 Apr 2021