Presentation is loading. Please wait.

Presentation is loading. Please wait.

Reverse Engineering. Reverse engineering is the general process of analyzing a technology specifically to ascertain how it was designed or how it operates.

Similar presentations


Presentation on theme: "Reverse Engineering. Reverse engineering is the general process of analyzing a technology specifically to ascertain how it was designed or how it operates."— Presentation transcript:

1 Reverse Engineering

2 Reverse engineering is the general process of analyzing a technology specifically to ascertain how it was designed or how it operates. This kind of inquiry engages individuals in a constructive learning process about the operation of systems and products. Reverse engineering as a method is not confined to any particular purpose, but is often an important part of the scientific method and technological development. The process of taking something apart and revealing the way in which it works is often an effective way to learn how to build a technology or make improvements to it.

3 Through reverse engineering, a researcher gathers the technical data necessary for the documentation of the operation of a technology or component of a system. In "black box" reverse engineering, systems are observed without examining internal structure, while in "white box" reverse engineering the inner workings of the system are inspected.

4 When reverse engineering software, researchers are able to examine the strength of systems and identify their weaknesses in terms of performance, security, and interoperability. The reverse engineering process allows researchers to understand both how a program works and also what aspects of the program contribute to its not working. Independent manufacturers can participate in a competitive market that rewards the improvements made on dominant products. For example, security audits, which allow users of software to better protect their systems and networks by revealing security flaws, require reverse engineering. The creation of better designs and the interoperability of existing products often begin with reverse engineering.

5 How does reverse engineering differ from other types of engineering? The most traditional method of the development of a technology is referred to as "forward engineering." In the construction of a technology, manufacturers develop a product by implementing engineering concepts and abstractions. By contrast, reverse engineering begins with final product, and works backward to recreate the engineering concepts by analyzing the design of the system and the interrelationships of its components.

6 Value engineering refers to the creation of an improved system or product to the one originally analyzed. While there is often overlap between the methods of value engineering and reverse engineering, the goal of reverse engineering itself is the improved documentation of how the original product works by uncovering the underlying design. The working product that results from a reverse engineering effort is more like a duplicate of the original system, without necessarily adding modifications or improvements to the original design.

7 Since the reverse engineering process can be time- consuming and expensive, reverse engineers generally consider whether the financial risk of such an endeavor is preferable to purchasing or licensing the information from the original manufacturer, if possible.

8 In order to reverse engineer a product or component of a system, engineers and researchers generally follow the following four- stage process: 1.Identifying the product or component which will be reverse engineered 2.Observing or disassembling the information documenting how the original product works 3.Implementing the technical data generated by reverse engineering in a replica or modified version of the original 4.Creating a new product (and, perhaps, introducing it into the market)

9 In the first stage in the process, sometimes called "prescreening," reverse engineers determine the candidate product for their project. Potential candidates for such a project include singular items, parts, components, units, subassemblies, some of which may contain many smaller parts sold as a single entity. The second stage, disassembly or decompilation of the original product, is the most time-consuming aspect of the project. In this stage, reverse engineers attempt to construct a characterization of the system by accumulating all of the technical data and instructions of how the product works.

10 In the third stage of reverse engineering, reverse engineers try to verify that the data generated by disassembly or decompilation is an accurate reconstruction the original system. Engineers verify the accuracy and validity of their designs by testing the system, creating prototypes, and experimenting with the results. The final stage of the reverse engineering process is the introduction of a new product into the marketplace. These new products are often innovations of the original product with competitive designs, features, or capabilities. These products may also be adaptations of the original product for use with other integrated systems, such as different platforms of computer operating systems.

11 Often different groups of engineers perform each step separately, using only documents to exchange the information learned at each step. This is to prevent duplication of the original technology, which may violate copyright. By contrast, reverse engineering creates a different implementation with the same functionality.

12 In the development of software, the source code in which programmers originally write is translated into object (binary) code. The translation is done with a computer program called an "assembler" or "compiler," depending on the source code's language, such as Java, C++, or assembly. A great deal of the original programmer's instructions, including commentary, notations, and specifications, are not included in the translation from source to object code (the assembly or compilation). Disassembly or decompilation reverses this process by reading the object code of the program and translating them into source code. By presenting the information in a computer language that a software programmer can understand, the reverse engineer can analyze the structure of the program and identify how it operates.

13 The data generated in the disassembly of a typical computer program is one to many files with thousands of lines of computer code. Because much of the original programmer's commentary, notations, and specifications are not retained in the object code, the reverse engineered code constitutes only a part of the program information included in the original source code. Engineers must interpret the resulting source code using knowledge and expertise to recreate the data structures of the original program and understand the overall design rationale of the system.

14 Not all reverse engineering efforts require "decompilation" of software. Some "black box" reverse engineering is done by characterizing software through observation of its interaction with system components, other software, and other (external) systems through networks.

15 What is the difference between source code and object code? Source code is the category of computer language instructions that is most frequently written and read by software programmers. A computer cannot generally run a program in source code form though. The source code is translated, with the use of an assembler or compiler, into a language form that contains instructions to the computer known as object code. Object code consists of numeric codes specifying each of the computer instructions that must be executed, as well as the locations in memory of the data on which the instructions are to operate.

16 While source code and object code are commonly referred to as different classes of computer language, these terms actually describe the series of transformations a program goes through when being converted from a higher level language more easily comprehensible to humans to the lower level language of computer operations.

17 What is interoperability? Generally, interoperability allows technologies to work together when they use the same inputs and create the same outputs. For computers, interoperability is the abililty of programs and systems running on various kinds of software and hardware to communicate with each other. Standards foster interoperability by ensuring that all groups implementing the standard interpret it the same way, so that the technology produces consistent performance regardless of the individual brand or model. By contrast, a lack of standards means that parties must reverse engineer the technology to achieve interoperability. Moreover, owners of proprietary, non-standardized technologies retain control over upgrades and developments to those technologies, and may change them at will, disrupting the interoperability with other technologies.

18 What are the different uses of reverse engineering? A common misperception regarding reverse engineering is that it is used for the sake of stealing or copying someone else's work. Reverse engineering is not only used to figure out how something works, but also the ways in which it does not work. Some examples of the different uses of reverse engineering include: Understanding how a product works more comprehensively than by merely observing it Investigating and correcting errors and limitations in existing programs Studying the design principles of a product as part of an education in engineering Making products and systems compatible so they can work together or share data Evaluating one's own product to understand its limitations

19 Determining whether someone else has literally copied elements of one's own technology Creating documentation for the operation of a product whose manufacturer is unresponsive to customer service requests Transforming obsolete products into useful ones by adapting them to new systems and platforms


Download ppt "Reverse Engineering. Reverse engineering is the general process of analyzing a technology specifically to ascertain how it was designed or how it operates."

Similar presentations


Ads by Google