Locating, extracting, and reusing the implementation of a feature within an existing binary program is challenging. This paper proposes a novel algorithm to identify modular functions corresponding to such features and to provide usable interfaces for the extracted functions. We provide a way to represent a desired feature with two executions that both execute the feature but with different inputs. Instead of reverse engineering the interface of a function, we wrap the existing interface and provide a simpler and more intuitive interface for the function through concretization and redirection. Experiments show that our technique can be applied to extract varied features from several real world applications including a malicious application.
@inproceedings{DBLP:conf/icse/KimSZXA14, author = {Dohyeong Kim and William N. Sumner and Xiangyu Zhang and Dongyan Xu and Hira Agrawal}, title = {Reuse-oriented reverse engineering of functional components from x86 binaries}, booktitle = {{ICSE}}, pages = {1128--1139}, year = {2014}, }