Open AccessProceedings Article
Automatic Reverse Engineering of Data Structures from Binary Execution.
Zhiqiang Lin,Xiangyu Zhang,Dongyan Xu +2 more
- 01 Jan 2010
175
TL;DR: In this article, a reverse-engineering technique is proposed to automatically reveal program data structures from binaries based on dynamic analysis, where each memory location accessed by the program is tagged with a timestamped type attribute.
read more
Abstract: With only the binary executable of a program, it is useful to discover the program's data structures and infer their syntactic and semantic definitions. Such knowledge is highly valuable in a variety of security and forensic applications. Although there exist efforts in program data structure inference, the existing solutions are not suitable for our targeted application scenarios. In this paper, we propose a reverse engineering technique to automatically reveal program data structures from binaries. Our technique, called REWARDS, is based on dynamic analysis. More specifically, each memory location accessed by the program is tagged with a timestamped type attribute. Following the program's runtime data flow, this attribute is propagated to other memory locations and registers that share the same type. During the propagation, a variable's type gets resolved if it is involved in a type-revealing execution point or type sink. More importantly, besides the forward type propagation, REWARDS involves a backward type resolution procedure where the types of some previously accessed variables get recursively resolved starting from a type sink. This procedure is constrained by the timestamps of relevant memory locations to disambiguate variables re-using the same memory location. In addition, REWARDS is able to reconstruct in-memory data structure layout based on the type information derived. We demonstrate that REWARDS provides unique benefits to two applications: memory image forensics and binary fuzzing for vulnerability discovery.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Property Inference Attacks on Fully Connected Neural Networks using Permutation Invariant Representations
Karan Ganju,Qi Wang,Wei Yang,Carl A. Gunter,Nikita Borisov +4 more
- 15 Oct 2018
TL;DR: This paper develops techniques that reduce the complexity of the inference of global properties of the training data, such as the environment in which the data was produced, or the fraction of the data that comes from a certain class, as applied to white-box Fully Connected Neural Networks (FCNNs).
610
Hacking smart machines with smarter ones: How to extract meaningful data from machine learning classifiers
Giuseppe Ateniese,Luigi V. Mancini,Angelo Spognardi,Antonio Villani,Domenico Vitali,Giovanni Felici +5 more
TL;DR: It is shown that it is possible to infer unexpected but useful information from ML classifiers and that this kind of information leakage can be exploited by a vendor to build more effective classifiers or to simply acquire trade secrets from a competitor's apparatus, potentially violating its intellectual property rights.
TIE: Principled Reverse Engineering of Types in Binary Programs
JongHyup Lee,Thanassis Avgerinos,David Brumley +2 more
- 01 Feb 2011
TL;DR: Novel techniques for reverse engineering data type abstractions from binary programs are developed and a novel type reconstruction system based upon binary code analysis is developed that is both more accurate and more precise at recovering high-level types than existing mechanisms.
Undangle: early detection of dangling pointers in use-after-free and double-free vulnerabilities
Juan Caballero,Gustavo Grieco,Mark Marron,Antonio Nappa +3 more
- 15 Jul 2012
TL;DR: This work proposes early detection, a novel runtime approach for finding and diagnosing use-after-free and double-free vulnerabilities, and implements it in a tool called Undangle, which is evaluated for vulnerability analysis on 8 real-world vulnerabilities.
DIFUZE: Interface Aware Fuzzing for Kernel Drivers
Jake Corina,Aravind Machiry,Christopher Salls,Yan Shoshitaishvili,Shuang Hao,Christopher Kruegel,Giovanni Vigna +6 more
- 30 Oct 2017
TL;DR: DIFUZE is an interface-aware fuzzing tool to automatically generate valid inputs and trigger the execution of the kernel drivers, and can effectively identify kernel driver bugs, and reports 32 previously unknown vulnerabilities, including flaws that lead to arbitrary code execution.
175
References
Pin: building customized program analysis tools with dynamic instrumentation
Chi-Keung Luk,Robert Cohn,Robert Muth,Harish Patil,Artur Klauser,Geoff Lowney,Steven Wallace,Vijay Janapa Reddi,Kim Hazelwood +8 more
- 12 Jun 2005
TL;DR: The goals are to provide easy-to-use, portable, transparent, and efficient instrumentation, and to illustrate Pin's versatility, two Pintools in daily use to analyze production software are described.
A theory of type polymorphism in programming
TL;DR: This work presents a formal type discipline for polymorphic procedures in the context of a simple programming language, and a compile time type-checking algorithm w which enforces the discipline.
2.6K
•Proceedings Article
Automated Whitebox Fuzz Testing.
Patrice Godefroid,Michael Y. Levin,David Molnar +2 more
- 01 Nov 2008
TL;DR: This work presents an alternative whitebox fuzz testing approach inspired by recent advances in symbolic execution and dynamic test generation, and implemented this algorithm in SAGE (Scalable, Automated, Guided Execution), a new tool employing x86 instruction-level tracing and emulation for white box fuzzing of arbitrary file-reading Windows applications.
EXE: Automatically Generating Inputs of Death
TL;DR: This article presents EXE, an effective bug-finding tool that automatically generates inputs that crash real code by solving the current path constraints to find concrete values using its own co-designed constraint solver, STP.
1.1K
Grammar-based whitebox fuzzing
Patrice Godefroid,Adam Kiezun,Michael Y. Levin +2 more
- 07 Jun 2008
TL;DR: Results of the experiments show that grammar-based whitebox fuzzing explores deeper program paths and avoids dead-ends due to non-parsable inputs and increased coverage of the code generation module of the IE7 JavaScript interpreter from 53% to 81% while using three times fewer tests.
Related Papers (5)
Gogul Balakrishnan,Thomas Reps +1 more
- 14 Jan 2007
David Brumley,Ivan Jager,Thanassis Avgerinos,Edward J. Schwartz +3 more
- 14 Jul 2011
Gogul Balakrishnan,Thomas Reps +1 more
- 01 Jan 2006