Rupprecht, ThomasThomasRupprechtBoockmann, JanJanBoockmann0000-0001-6816-8393White, DavidDavidWhiteLüttgen, GeraldGeraldLüttgen0000-0002-0925-4870Amme, WolframHeinze, Thomas S.2019-09-192018-11-262017https://fis.uni-bamberg.de/handle/uniba/44806Program comprehension is an important task for software engineers who maintain legacy code, as well as for reverse engineers who analyse binary executables such as malware. Detecting dynamic, i.e., pointer-based data structures is a particular challenge due to the complex usage of pointers found in real world software. This paper presents the key results of the DFG-funded project "Learning Data Structure Behaviour from Executions of Pointer Programs" (DSI), in which dynamic analysis techniques have been developed to identify dynamic data structures in C programs and x86 binary code. DSI's analysis utilizes a novel memory abstraction that allows for a compact description of pointer-based data structures such as linked lists and binary trees, and their interconnections such as parent-child nesting. On top of this abstraction, an evidence-collecting approach calculates a natural language description of the observed data structure with the help of a systematic taxonomy. The inferred data structure information is not only helpful for program comprehension but also for other use cases including software verification and software visualization.engDSI: Automated detection of dynamic data structures in C programs and binary codeconferenceobjecthttp://www.kps2017.uni-jena.de/proceedings/kps2017.pdf