kirancodes.me
To Proof Maintenance & Beyond!

DSIbin: identifying dynamic data structures in C/C++ binaries

Thomas Rupprecht, Xi Chen, David H. White, Jan H. Boockmann, Gerald Lüttgen, Herbert Bos

Abstract

Reverse engineering binary code is notoriously difficult and, especially, understanding a binary's dynamic data structures. Existing data structure analyzers are limited wrt. program comprehension: they do not detect complex structures such as skip lists, or lists running through nodes of different types such as in the Linux kernel's cyclic doubly-linked list. They also do not reveal complex parent-child relationships between structures. The tool DSI remedies these shortcomings but requires source code, where type information on heap nodes is available. We present DSIbin, a combination of DSI and the type excavator Howard for the inspection of C/C++ binaries. While a naive combination already improves upon related work, its precision is limited because Howard's inferred types are often too coarse. To address this we auto-generate candidates of refined types based on speculative nested-struct detection and type merging; the plausibility of these hypotheses is then validated by DSI. We demonstrate via benchmarking that DSIbin detects data structures with high precision.

BibTeX
@inproceedings{Rupprecht-al:ASE17,
  author    = {Thomas Rupprecht and
               Xi Chen and
               David H. White and
               Jan H. Boockmann and
               Gerald L{\"{u}}ttgen and
               Herbert Bos},
  title     = {{DSIbin:} identifying dynamic data structures in {C/C++} binaries},
  booktitle = {ASE},
  pages     = {331--341},
  publisher = {{IEEE} Computer Society},
  year      = {2017},
}

Related papers