Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Thomas Rupprecht

dblp:183/0190 · DBLP profile ↗
← Back
3ranked-venue papers
2as first author
0since 2021 · last 2017
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 2 · 1 first-authorSecurity and privacy · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Program analysis · 70% Software maintenance and evolution · 21% Programming languages and type systems · 9%
Network and information security
1 paper
Systems and software security · 100%

Topics — the 7 heaviest of 8, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › heap analysis
data structure identification
0.522017
DSIbin: identifying dynamic data structures in C/C++ binaries · ASE 2017
DSI: an evidence-based approach to identify dynamic data structures in C programs · ISSTA 2016
Program analysis
binary analysis
0.312017
DSIbin: identifying dynamic data structures in C/C++ binaries · ASE 2017
Software maintenance and evolution
reverse engineering
0.312017
DSIbin: identifying dynamic data structures in C/C++ binaries · ASE 2017
Systems and software security › binary analysis
binary type recovery
0.212016
POSTER: Identifying Dynamic Data Structures in Malware · CCS 2016
Program analysis
dynamic analysis
0.212016
DSI: an evidence-based approach to identify dynamic data structures in C programs · ISSTA 2016
Program analysis
static analysis
0.222017
DSIbin: identifying dynamic data structures in C/C++ binaries · ASE 2017
POSTER: Identifying Dynamic Data Structures in Malware · CCS 2016
Programming languages and type systems
type inference
0.222017
DSIbin: identifying dynamic data structures in C/C++ binaries · ASE 2017
POSTER: Identifying Dynamic Data Structures in Malware · CCS 2016

Methods — techniques the papers use, named apart from their topics

memory abstraction · 0.8machine learning · 0.5type merging · 0.3speculative nested-struct detection · 0.3evidence reinforcement · 0.2
YearPublicationVenuePosition
2017 DSIbin: identifying dynamic data structures in C/C++ binaries
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.
Thomas Rupprecht, Xi Chen 0038, David H. White 0001, Jan H. Boockmann, Gerald Lüttgen, Herbert Bos
ASE1
2016 POSTER: Identifying Dynamic Data Structures in Malware
abstract
As the complexity of malware grows, so does the necessity of employing program structuring mechanisms during development. While control flow structuring is often obfuscated, the dynamic data structures employed by the program are typically untouched. We report on work in progress that exploits this weakness to identify dynamic data structures present in malware samples for the purposes of aiding reverse engineering and constructing malware signatures, which may be employed for malware classification. Using a prototype implementation, which combines the type recovery tool Howard and the identification tool Data Structure Investigator (DSI), we analyze data structures in Carberp and AgoBot malware. Identifying their data structures illustrates a challenging problem. To tackle this, we propose a new type recovery for binaries based on machine learning, which uses Howard's types to guide the search and DSI's memory abstraction for hypothesis evaluation.
Thomas Rupprecht, Xi Chen 0038, David H. White 0001, Jan Tobias Mühlberg, Herbert Bos, Gerald Lüttgen
CCS1
2016 DSI: an evidence-based approach to identify dynamic data structures in C programs
abstract
Comprehension of C programs containing pointer-based dynamic data structures can be a challenging task. To tackle this challenge we present Data Structure Investigator (DSI), a new dynamic analysis for automated data structure identification that targets C source code. Our technique first applies a novel abstraction on the evolving memory structures observed at runtime to discover data structure building blocks. By analyzing the interconnections between building blocks we are then able to identify, e.g., binary trees, doubly-linked lists, skip lists, and relationships between these such as nesting. Since the true shape of a data structure may be temporarily obscured by manipulation operations, we ensure robustness by first discovering and then reinforcing evidence for data structure observations. We show the utility of our DSI prototype implementation by applying it to both synthetic and real world examples. DSI outputs summarizations of the identified data structures, which will benefit software developers when maintaining (legacy) code and inform other applications such as memory visualization and program verification.
David H. White 0001, Thomas Rupprecht, Gerald Lüttgen
ISSTA2