Recovery of Class Hierarchies and Composition Relationships from Machine Code
نویسندگان
چکیده
We present a reverse-engineering tool, called Lego, which recovers class hierarchies and composition relationships from stripped binaries. Lego takes a stripped binary as input, and uses information obtained from dynamic analysis to (i) group the functions in the binary into classes, and (ii) identify inheritance and composition relationships between the inferred classes. The software artifacts recovered by Lego can be subsequently used to understand the object-oriented design of software systems that lack documentation and source code, e.g., to enable interoperability. Our experiments show that the class hierarchies recovered by Lego have a high degree of agreement—measured in terms of precision and recall—with the hierarchy defined in the source code.
منابع مشابه
Software-Architecture Recovery from Machine Code
In this paper, we present a tool, called Lego, which recovers object-oriented software architecture from stripped binaries. Lego takes a stripped binary as input, and uses information obtained from dynamic analysis to (i) group the functions in the binary into classes, and (ii) identify inheritance and composition relationships between the inferred classes. The information obtained by Lego can ...
متن کاملThe Effects of Constant Touch on Consumer Behavior: The Case of Iranian Mobile Phone Users
The main objective of this paper is to argue how the mobile phones have transformed the Iranian lifestyle and how the arrival of mobiles has been a catalyst for revolting behavior, and has launched a new consumer behavior and has changed our relationships. The paper explains how the people's behavior has developed a whole new social code in Iran. It is argued that the social value of being able...
متن کاملJava Native Interface idioms for C++ class hierarchies
SUMMARY The Java™ Native Interface (JNI) provides a set of mechanisms for implementing Java methods in C or C++. JNI is useful for reusing C and C++ code repositories within Java frameworks. JNI is also useful for real-time systems, where compiled C/C++ code executes performance-critical tasks, while Java code executes system control and feature tasks. Available JNI literature concentrates on c...
متن کاملA Type Safe Design to Allow the Separation of Different Responsibilities into Parallel Hierarchies
Template class of the Parallel Hierarchies structure. public abstract class VisitorCG extends Visitor { protected T codeGenerator; public VisitorCG(T codeGenerator) { this.codeGenerator=codeGenerator; } @Override public void visitClassNode(ClassNode node) { this.codeGenerator.generateClassHeader(node); for(FieldNode field : node.getFields()) this.codeGenerator.generate...
متن کاملVisual Component Composition Using Composition Patterns
We improve current visual component composition environments by introducing composition patterns as first class objects that can be defined, stored and reused independently of the components. We document both components and composition patterns using an extended sequence diagram notation. For a component, typical usage protocols are specified while a composition pattern specifies how a set of r...
متن کامل