Skip to main navigation Skip to search Skip to main content

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

  • Thomas Rupprecht
  • , Xi Chen
  • , David H. White
  • , Jan H. Boockmann
  • , Gerald Luttgen
  • , Herbert Bos

Research output: Chapter in Book / Report / Conference proceedingConference contributionAcademicpeer-review

98 Downloads (Pure)

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.

Original languageEnglish
Title of host publication2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)
Subtitle of host publication[Proceedings]
PublisherInstitute of Electrical and Electronics Engineers Inc.
Pages331-341
Number of pages11
ISBN (Electronic)9781538626849
ISBN (Print)9781538639764
DOIs
Publication statusPublished - 2017
Event32nd IEEE/ACM International Conference on Automated Software Engineering, ASE 2017 - Urbana-Champaign, United States
Duration: 30 Oct 20173 Nov 2017

Conference

Conference32nd IEEE/ACM International Conference on Automated Software Engineering, ASE 2017
Country/TerritoryUnited States
CityUrbana-Champaign
Period30/10/173/11/17

Funding

This work was supported by the German Research Foundation through DFG grant LU 1748/4-1, the Netherlands Organisation for Scientific Research through the grant NWO 639.023.309 VICI Dowsing, and the Cisco Grant Program (CG #595086). We also thank the anonymous reviewers for their valuable comments and suggestions

FundersFunder number
California Department of Fish and Game
Deutsche ForschungsgemeinschaftLU 1748/4-1
Nederlandse Organisatie voor Wetenschappelijk OnderzoekCG #595086, NWO 639.023.309 VICI Dowsing

    Keywords

    • Data structure identification
    • dynamic data structures
    • pointer programs
    • reverse engineering
    • type recovery

    Fingerprint

    Dive into the research topics of 'DSIbin: Identifying dynamic data structures in C/C++ binaries'. Together they form a unique fingerprint.

    Cite this