Reverse Engineering Report

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 15
At a glance
Powered by AI
The key takeaways are that reverse engineering involves analyzing a system to understand its components and recreate representations of the system. It is commonly used in fields like software, automotive, and electronics to understand competitors' products.

Reverse engineering involves taking apart a product or system to understand how it works without documentation. It is used in fields like software, hardware, chemicals and more. Examples given are taking apart a competitor's processor or defeating a patent.

The passage discusses that usability is often a major concern for adopting reverse engineering tools. If a tool is difficult to use, it will negatively impact its adoption rate regardless of how useful it is.

ACKNOWLEDGEMENT

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.

Sincerely thank my guide, Dr. MUNIRAJU, Head of the department, Department of


Mechanical Engineering, for their valuable guidance, care and timely support throughout the
project work. He always has a constant source of encouragement.

I sincerely thank to Dr. K.I. PARASHIVAMURTHY, Principal Government


Engineering College Chamarajanagara, for providing all the required facilities.

I am also grateful to my PARENTS and FRIENDS for their timely aid without

Which I wouldn't have finished our project work successfully.


PREFACE

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.

Engineering is the profession involved in designing, manufacturing, constructing, and


maintaining of products, systems, and structures. At a higher level, there are two types of
engineering: forward engineering and reverse engineering.

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.

The process of duplicating an existing component, subassembly, or product, without the


aid of drawings, documentation, or computer model is known as reverse engineering.

Reverse engineering can be viewed as the process of analyzing a system to:

 Identify the system's components and their interrelationships


 Create representations of the system in another form or a higher level of abstraction
 Create the physical representation of that system

Reverse engineering is very common in such diverse fields as software engineering,


entertainment, automotive, consumer products, microchips, chemicals, electronics, and
mechanical designs. For example, when a new machine comes to market, competing
manufacturers may buy one machine and disassemble it to learn how it was built and how it
works. A chemical company may use reverse engineering to defeat a patent on a competitor's
manufacturing process. In civil engineering, bridge and building designs are copied from past
successes so there will be less chance of catastrophic failure. In software engineering, good
source code is often a variation of other good source code.

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

Objectives: To provide a learning opportunity by reverse engineering utilising all the


techniques used in material’s investigation.

 Get a metallic “PART” of minimum size =25mm x 25mm or 25mm in diameter


[Wrought samples such rods, sheets, squares etc., will not serve the purpose!]
 Get photograph of the component-take at least five pictures in different directions!
 Make sketches (in all directions) and mark the position for hardness test, metallography
and microscopy in as-received condition
 Get hardness profile across the sample.
 Get sample for metallography, microscopy and XRF analysis from all areas of different
hardness regions.
 Prepare the samples for metallohgraphy and study the microstructure get at least 6 to 10
micrograph from different region of the samples.
 Go to the library, compare the microstructure of your sample from Metals Handbook and
other books on microstructures and identify it.
 Get XRF analysis from all the areas of different hardness.
 Identify the sample material/s from chemical composition
 Go to the library do literature survey and see “what type of heat treatment is possible” on
the sample. A TTT diagram will be helpful.
 Workout heat treatment cycles.
 Discuss all your results and data with the project Advisor.
 Perform heat treatment
 GO To number 4
 Make a report of all the work.
REASONS FOR REVERSE ENGINEERING A PART OR PRODUCT

 The original manufacturer of a product no longer produces a product


 There is inadequate documentation of the original design
 The original manufacturer no longer exists, but a customer needs the product
 The original design documentation has been lost or never existed
 Some bad features of a product need to be designed out. For example, excessive wear might
indicate where a product should be improved

 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

Reverse engineering enables the duplication of an existing part by capturing the


component's physical dimensions, features, and material properties. Before attempting reverse
engineering, a well-planned life-cycle analysis and cost/benefit analysis should be conducted to
justify the reverse engineering projects. Reverse engineering is typically cost effective only if the
items to be reverse engineered reflect a high investment or will be reproduced in large quantities.
Reverse engineering of a part may be attempted even if it is not cost effective, if the part is
absolutely required and is mission-critical to a system.
Reverse engineering of mechanical parts involves acquiring three-dimensional position
data in the point cloud using laser scanners or computed tomography (CT). Representing
geometry of the part in terms of surface points is the first step in creating parametric surface
patches. A good polymesh is created from the point cloud using reverse engineering software.
The cleaned-up polymesh, NURBS (Non-uniform rational B-spline) curves, or NURBS surfaces
are exported to CAD packages for further refinement, analysis, and generation of cutter tool
paths for CAM. Finally, the CAM produces the physical part.

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.

DIFFERENCE BETWEEN REVERSE ENGINEERING AND OTHER TYPES

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.

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 order to reverse engineer a product or component of a system, engineers and


researchers generally follow the following four-stage process:

 Identifying the product or component which will be reverse engineered


 Observing or disassembling the information documenting how the original product works
 Implementing the technical data generated by reverse engineering in a replica or modified
version of the original
 Creating a new product (and, perhaps, introducing it into the market)

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.

ACTUAL REVERSE ENGGINEERING PROCESS:

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.

REVERSE ENGINEERING TOOLS

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.

Current Tool Effectiveness

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

You might also like