Reverse Engineering Report
Reverse Engineering Report
Reverse Engineering Report
A part from the effort of me, the success of this seminar depends largely on the
encouragement and guideline of many others. I take this opportunity to express my gratitude to
me people who have been instrumental in successful completion of this seminar.
I am also grateful to my PARENTS and FRIENDS for their timely aid without
In B.E semester scheme, seminar has been introduced in the 8th semester to give some
exposure to the students and to test their capacity to put their principles of the engineering into
practice. This also meant to turn and shape the students to face, which they will come across in
the society.
In this work we do not claim to have evolved extraordinary and we consider this as our
fulfillment of our curriculum.
We hereby assume that this seminar has not been submitted in any college at any time for
the sectional’s requirement.
Reverse Engineering
Introduction
Reverse Engineering or Product Dissection is based upon the older activity known as
Benchmarking where engineers for example could observe measure or take apart their own or
another organization’s product for the benefit of discovering how it works, performs or what
improvements could be copied or enhanced for their own product.
Reverse Engineering also includes software and hardware engineering in which the
former is done to retrieve the source code of a programme due to it being lost, what operations
the programme carries out, improve programme performance or to fix inherent bugs. Hardware
reverse engineering involves taking apart a device (or processor) to see how it works. For
example, if a processor manufacturer wants to see how a competitor's processor works, they can
purchase a competitor's processor; disassemble it, and then make their own processor similar to
it. However, this process is illegal in many countries. Normally hardware reverse engineering
requires a great deal of expertise and is quite expensive.
Forward engineering is the traditional process of moving from high-level abstractions and
logical designs to the physical implementation of a system. In some situations, there may be a
physical part without any technical details, such as drawings, bills-of-material, or without
engineering data, such as thermal and electrical properties.
In some situations, designers give a shape to their ideas by using clay, plaster, wood, or
foam rubber, but a CAD model is needed to enable the manufacturing of the part. As products
become more organic in shape, designing in CAD may be challenging or impossible. There is no
guarantee that the CAD model will be acceptably close to the sculpted model. Reverse
engineering provides a solution to this problem because the physical model is the source of
information for the CAD model. This is also referred to as the part-to-CAD process.
Another reason for reverse engineering is to compress product development times. In the
intensely competitive global market, manufacturers are constantly seeking new ways to shorten
lead-times to market a new product. Rapid product development (RPD) refers to recently
developed technologies and techniques that assist manufacturers and designers in meeting the
demands of reduced product development time. For example, injection-molding companies must
drastically reduce the tool and die development times. By using reverse engineering, a three-
dimensional product or model can be quickly captured in digital form, re-modeled, and exported
for rapid prototyping/tooling or rapid manufacturing.
OBJECTIVES
To strengthen the good features of a product based on long-term usage of the product
To analyze the good and bad features of competitors' product
To explore new avenues to improve product performance and features
To gain competitive benchmarking methods to understand competitor's products and develop
better products
The original CAD model is not sufficient to support modifications or current manufacturing
methods
The original supplier is unable or unwilling to provide additional parts
The original equipment manufacturers are either unwilling or unable to supply replacement
parts, or demand inflated costs for sole-source parts
To update obsolete materials or antiquated manufacturing processes with more current, less-
expensive technologies
It can be said that reverse engineering begins with the product and works through the
design process in the opposite direction to arrive at a product definition statement (PDS).
In doing so, it uncovers as much information as possible about the design ideas that were
used to produce a particular product.
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.
STAGES INVOLVED IN THE REVERSE ENGINEERING PROCESS
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.
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.
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.
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.
The reverse engineering process begins with identifying the project scope.
Once defined, the appropriate method to capture geometry is selected based on accuracy
required, part geometry, and how the final output will be used.
The part can be physically measured using traditional hand tools, by using non-contact
inspection equipment by using a touch-probe coo In the reverse engineering process, the
geometry can also be "captured" by mapping the surface with 3d scanning services such as a
laser scanner, co-ordinate measuring machine (CMM) or a portable CMM through the use of a
white light scanner by using a full contact CMM scanner or by a process called Capturing
Geometry Internally (CGI). This is a method involving potting of the part, curing it, milling
through the potted sample at pre-defined depths, and taking scans at each of the milled depths to
produce internal and external point cloud geometry. These various methods of 3d scanning
services are used to capture a part's geometry during the reverse engineering process.
It is important that the correct method be used to capture geometry for any reverse
engineering project. The method is dependent on the part shape, required accuracy, project goals,
and how the final results will be used.
Once the geometry is captured, the reverse engineering project continues and the point cloud is
produced and surfacing can begin…
A full parametric 3-D CAD model can be developed, using one of our customer
compatible CAD platforms, making the reverse-engineered model ready for tooling or
additional design modifications Some customers require 2-D drawings of the component. We
obtain and use your CAD templates with title block information. Any other corporate standards
are used where necessary. If a template or title block is not available, we’ll use a generic format
and follow ANSI Y14 drafting standards and employ best practices in both cases.
Techniques used to aid program understanding can be grouped into three categories:
unaided browsing, leveraging corporate knowledge and experience, and computer-aided
techniques like reverse engineering.
Unaided browsing is essentially “human ware”: the software engineer manually flips
through source code in printed form or browses it online, perhaps using the file system as a
navigation aid. This approach has inherent limitations based on the amount of information that a
software engineer may be able to keep track of in his or her head.
Leveraging corporate knowledge and experience can be accomplished through mentoring
or by conducting informal interviews with personnel knowledgeable about the subject system.
This approach can be very valuable if there are people available who have been associated with
the system as it has evolved over time. They carry important information in their heads about
design decisions, major changes over time, and troublesome subsystems. For example, corporate
memory may be able to provide guidance on where to look when carrying out a new
maintenance activity if it is similar to another change that took place in the past. This approach is
useful both for gaining a big- picture understanding of the system and for learning about selected
subsystems in detail.
However, leveraging corporate knowledge and experience is not always possible. The
original designers may have left the company. The software system may have been acquired
from another company. Or the system may have had its maintenance out-sourced. In these
situations, computer-aided reverse engineering is necessary. A reverse-engineering environment
can manage the complexities of program understanding by helping the software engineer extract
high-level information from low-level artifacts, such as source code.
This frees software engineers from tedious, manual, and error-prone tasks such as code
reading, searching, and pattern matching by inspection.
Given that reverse engineering tools seem to be a key to aiding program understanding,
how effective are today’s offerings in meeting this goal? In both academic and corporate
settings, reverse engineering tools have a long way to go before becoming an effective and
integral part of the standard toolset a typical software engineer calls upon in day-to-day usage.
Perhaps the biggest challenge to increased effectiveness of reverse engineering tools is wider
adoption: tools can’t be effective if they aren’t used, and most software engineers have little
knowledge of current tools and their capabilities. While there is a relatively healthy market for
unit-testing tools, code debugging utilities, and integrated development environments, the market
for reverse engineering tools remains quite limited.
In addition to awareness, adoption represents a critical barrier. Most people lack the
necessary skills needed to make proper use of reverse engineering tools. The root of the adoption
problem is really two-fold: a lack of software analysis skills on the part of today’s software
engineers, and a lack of integration between advanced reverse engineering tools and more
commonplace software utilities such as those mentioned above. The art of program
understanding requires knowledge of program analysis techniques that are essentially tool-
independent. Since most programmers lack this type of foundational knowledge, even the best of
tools won’t be of much help.
From an integration perspective, most reverse engineering tools attempt to create a
completely integrated environment in which the reverse engineering tool assumes it has overall
control. However, such an approach precludes the easy integration of reverse engineering tools
into toolsets commonly used in both academic research and in industry. In a UNIX-like
environment, the established troika of edit tools is common. Representative tools in this group
include emacs and vi for editing, gcc for compiling, and gdb for debugging. In a Windows NT
environment, the tools may have different names, but they serve similar purposes. The only real
difference is cost and choice. A recent case study, illustrates the challenges facing students in a
short-term project and the difficulties they face in solving the problem. Learning how to
effectively use a reverse engineering tool is low on their list of priorities, even when such a tool
is available.
Summary
This section reviewed various experimental techniques for evaluating and comparing
software exploration tools, an important category of reverse engineering tools. Each of the
investigative techniques just described has certain advantages and disadvantages. However,
combining these techniques (as Singer and Lethbridge have done) should produce stronger
results. Moreover, sharing results among research groups is also very important. For example,
Sim and Storey chaired a workshop where several reverse engineering tools were compared in a
live demonstration. The tools were applied to a significant case study where each team had to
complete a series of software maintenance and documentation tasks and collaboration between
teams was emphasized.
Adoption of reverse engineering technology in industry has been very slow. However,we
observed in our user studies, that usability is often a major concern. If the tool is difficult to use,
it will affect its adoption rate, no matter how useful it may be.
Conclusion
Even if we perfect reverse engineering technology, there are inherent high costs and risks
in evolving legacy software systems. Developing strategies to control these costs and risks is a
key research direction for the future. Practitioners need a reengineering economics book, which
would serve as a guide to determine reengineering costs and to use economic analyses for
making improved reengineering decisions.
Probably the most critical issue for the next decade is to teach students about software
evolution. Computer science, computer engineering, and software engineering curricula, by and
large, teach software construction from scratch and neglect to teach software maintenance and
evolution. Contrast this situation with electrical or civil engineering, where the study of existing
systems and architectures constitutes a major part of the curriculum. Concepts such as
architecture, abstraction, consistency, completeness, efficiency, or robustness should be taught
from both a software design and a software analysis perspective. Software architecture courses
are now established in many computer science programs, but topics such as software evolution,
reverse engineering, program understanding, software reengineering, or software migration are
rare. We must aim for a balance between software analyses and software construction in
software engineering curricula.
Reference:
1) www.wikepedia.org
2) www.solar.org