Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MENTOR2
Prepared by
1 of 14
Reverse Engineering
MENTOR2
Slide 1 – Title Slide
Slide 2 – Agenda
Slide 3 – Agenda
Introduce the basic idea of Reverse Engineering by referencing the following definitions pulled from
the web. Note the subtle differences between definitions and that application (web v. physical) has an
impact on the interpretation of Reverse Engineering.
[Merriam-Webster]
to disassemble and examine or analyze in detail (a product or device) to discover the concepts involved
in manufacture usually in order to produce something similar
https://www.merriam-webster.com/dictionary/reverse%20engineer
[Techopedia]
Reverse engineering, in computer programming, is a technique used to analyze software in order to
identify and understand the parts it is composed of. The usual reasons for reverse engineering a piece of
software are to recreate the program, to build something similar to it, to exploit its weaknesses or
strengthen its defenses.
https://www.techopedia.com/definition/3868/reverse-engineering
[Wikipedia]
Reverse engineering, also called back engineering, is the processes of extracting knowledge or
design information from anything man-made and re-producing it or re-producing anything based on the
extracted information.[1]:3 The process often involves disassembling something (a mechanical device,
electronic component, computer program, or biological, chemical, or organic matter) and analyzing its
components and workings in detail.
https://en.wikipedia.org/wiki/Reverse_engineering
http://www.newworldencyclopedia.org/entry/Reverse_engineering
https://www.interaction-design.org/literature/article/reverse-engineering-conceptual-definition-heading-
back-to-where-we-started
Pull together some of the main themes derived from the definitions and concept of Reverse
Engineering. Most notably, that Reverse Engineering (regardless of web v. physical) emphasizes
functionality. Specifically, the mimicking, improving and modernizing of functionality. People pursue
Reverse Engineering to gain a better understanding of products, competitors or the general
marketplace within which a company is operating. Essentially, we Reverse Engineering to better
understand how things work and how we can use this knowledge to gain a stronger competitive
advantage or improve the functionality of the product(s) we are Reverse Engineering.
The reasons for employing reverse engineering are myriad. Some are legal and ethical and many are
not. It can, for example, be applied by the creator of a product when they are unable to remember the
steps they employed to create the product in the first place. Equally, it can be used to clone the product
and manufacture it more cheaply than the original which may be a more legally and ethically
concerning use of reverse engineering.
Common reasons for reverse engineering include:
• Developing interfaces for system interoperability. This may often be used when legacy
systems are involved or if original documentation is unavailable.
• Corporate and/or military espionage. Reverse engineering may enable the cloning of
competitor’s products or an understanding of how to develop market or military counter-
measures for that product.
• Improving product documentation. If product documentation supplied doesn’t mean the
standards for easy use, it may be that reverse engineering the product can help articulate the
documentation to a higher standard.
• Factoring out obsolescence. Many components of products have a short commercial lifespan;
if an existing component cannot be purchased it may be possible to reverse engineer it so that a
replacement can be constructed with materials currently available. Reverse engineering may
also be required when the original manufacturer no longer supports maintenance of a particular
product but maintenance is required.
• Modernizing of software products. Legacy systems may benefit from reverse engineering
when the original knowledge of how a specific challenge was tackled has been lost to a
business. Reverse engineering can also help with migrating legacy systems to new platforms.
• Security adaptions. Reverse engineering can benefit piracy and copying of systems by
removing rights management and it may also be used to develop stricter security protocols by
better understanding the operation of the product.
• Fixing product flaws. If you reverse engineer a product, particularly those which are not
supported by their original creators, you can often fix problems with the product.
• Cloning. Creating (often illegal) copies of the original product.
3 of 14
Reverse Engineering
MENTOR2
• Education. Reverse engineering can serve as an educational tool that enables understanding of
successful (and unsuccessful) designs so that this knowledge can be built upon in the future.
• Cost reduction. By understanding what goes into a product – cheaper alternatives may be
sourced as replacement parts.
• Redesign/repurposing. Products that are no longer useful may be reverse engineered so that
they can be improved upon and made useful once again.
• Competitor intelligence. Learning what your competitors are actually doing as opposed to
what they publicly state they are doing.
https://www.interaction-design.org/literature/article/reverse-engineering-conceptual-definition-
heading-back-to-where-we-started
There are a myriad of ways in which Reverse Engineering could be used. Some are good (altruistic)
and some a bad (nefarious). It's important to understand not just the positive aspects of Reverse
Engineering, but also the negative. In the same way that economic principles (e.g., depreciation) can
be used to improve corporate tax returns, they can also be used to 'game' the system unethically (we
will talk about ethics in later slides). There is a great case study with Waste Management on
engineering economics being used nefariously.
The main delineation made with Reverse Engineering is between Hardware and Software. It's
important for individuals to understand that Reverse Engineering is not a process applied only to
physical parts. We can Reverse Engineer software for the same purposes (understanding functionality,
improving capability, etc.) and using the same methodological approach. Obviously, there is a
significantly stronger push to Reverse Engineer software as data-driven, service-oriented companies
have seen great gains by incorporating apps (think Uber, Facebook) into their user's everyday life.
Reverse-engineering is used for many purposes: as a learning tool; as a way to make new, compatible
products that are cheaper than what's currently on the market; for making software interoperate more
effectively or to bridge data between different operating systems or databases; and to uncover the
undocumented features of commercial products.
http://www.computerworld.com/article/2585652/app-development/reverse-engineering.html
Regardless of the end-use, Reverse Engineering is a process. It's methodical. We can make reference
here to the Engineering Design Process or the Scientific Method. You don't Reverse Engineer by
grabbing a screwdriver and taking something apart. You have a plan not only to take apart but also to
inspect and access the mechanics (either hardware or software). A critical part of Reverse Engineering
is also the ability to re-create and/or re-assemble. To this degree, many companies and individuals
have started to regularly incorporate scanning or digitizing of parts/pieces along with a detailed set of
re-assembly instructions. The benefits of scanning or digitizing are two fold. First, documentation,
storage and data management become increasingly easier with digitization (though the tradeoff is
security. Computers and files are much more vulnerable to hacking than a physical document). Second,
4 of 14
Reverse Engineering
MENTOR2
re-creation of the product or simplification of the re-design is supported with digitizing or scanning.
Instead of designing the part/product from scratch, you simply take the scan and edit.
http://www.middleweb.com/wp-content/uploads/2015/07/stem-engineering-design-process.jpg
As computer-aided design has become more popular, reverse engineering has become a viable method
to create a 3D virtual model of an existing physical part for use in 3D CAD, CAM, CAE and other
software.[1] The reverse engineering process involves measuring an object and then reconstructing it as
a 3D model. The physical object can be measured using 3D scanning technologies like CMMs, laser
scanners, structured light digitizers, or computed tomography. The measured data alone, usually
represented as a point cloud, lacks topological information and is therefore often processed and
modeled into a more usable format such as a triangular faced mesh, a set of NURBS surfaces or a CAD
model. Applications like Imageware, PolyWorks, Rapidform, or Geomagic are used to process the point
clouds themselves into formats usable in other applications such as 3D CAD, CAM, CAE or
visualization.
Reverse engineering is also used by businesses to bring existing physical geometry into digital product
development environments, to make a digital 3D record of their own products or assess competitors'
products. It is used to analyze, for instance, how a product works, what it does, what components it
consists of, estimate costs, identify potential patent infringement, etc.
Value engineering is a related activity also used by business. It involves deconstructing and analyzing
products, but the objective is to find opportunities for cost cutting.
http://www.newworldencyclopedia.org/entry/Reverse_engineering
According to A Methodology for Reverse Engineering, reverse engineering consists of the following
steps:
• Observe and assess the mechanisms that make the device work.
• Dissect and study the inner workings of a mechanical device.
• Compare the actual device to your observations and suggest improvement.
Through reverse engineering, a researcher can gather the technical data necessary for the
documentation of the operation of a technology or component of a system. When reverse engineering
software, researchers are able to examine the strength of systems and identify their weaknesses in terms
5 of 14
Reverse Engineering
MENTOR2
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.
https://ethics.csc.ncsu.edu/intellectual/reverse/study.php
https://www.asme.org/engineering-topics/articles/modeling-computational-methods/the-rise-of-reverse-
engineering
Slide 10 – Where is Reverse Engineering
The following slides (Slides 10 – 14) give examples of famous Reverse Engineering projects. Additional
examples are included with Slide 14. Understanding the breadth of Reverse Engineering will help
individuals better comprehend its significance. Additionally, the diversity in examples showcase the
value of strong Reverse Engineering skills.
http://www.modellbaustube.com/images/hat8124a.jpg
6 of 14
Reverse Engineering
MENTOR2
https://s-media-cache-ak0.pinimg.com/564x/4e/6c/23/4e6c2360ed70e0ad1851f36cd814be84.jpg
http://www.romae-vitam.com/images/roman-trireme.jpg
http://media-
channel.nationalgeographic.com/media/uploads/photos/content/video/2012/05/01/16423441_B-
7 of 14
Reverse Engineering
MENTOR2
29_Superfortress.jpg
http://www.militaryfactory.com/aircraft/imgs/tupolev-tu4-bull.jpg
google samba
Additional examples and articles discussing famous Reverse Engineering projects are presented.
[Military]
http://www.theepochtimes.com/n3/1699756-7-military-weapons-china-copied-from-the-united-states/
http://www.popularmechanics.com/military/a746/3319656/
https://historylist.wordpress.com/2008/05/06/reverse-engineering-for-war/
https://www.lce.com/Mechanical-Component-Reverse-Engineering-Project-Examples-328.html
Jerry can: British and American forces noticed that the Germans had gasoline cans with an excellent
design. They reverse engineered copies of those cans. The cans were popularly known as "Jerry cans."
• Tupolev Tu-4: Three American B-29 bombers on missions over Japan were forced to land in the
8 of 14
Reverse Engineering
MENTOR2
USSR. The Soviets, who did not have a similar strategic bomber, decided to copy the B-29.
Within a few years they had developed the Tu-4, a near perfect copy.
• V2 Rocket: Technical documents for the V2 and related technologies were captured by the
Western Allies at the end of the war. Soviet and captured German engineers had to reproduce
technical documents and plans, working from captured hardware, in order to make their clone of
the rocket, the R-1, which began the postwar Soviet rocket program that led to the R-7 and the
beginning of the space race.
• K-13/R-3S missile (NATO reporting name AA-2 Atoll), a Soviet reverse-engineered copy of the
AIM-9 Sidewinder, made possible after a Taiwanese AIM-9B hit a Chinese MiG-17 without
exploding; amazingly, the missile became lodged within the airframe, the pilot returning to base
with what Russian scientists would describe as a university course in missile development.
• BGM-71_TOW Missile: In May 1975, negotiations between Iran and Hughes Missile Systems
on co-production of the TOW and Maverick missiles stalled over disagreements in the pricing
structure. The subsequent 1979 revolution ended all plans for such co-production. Iran was
successful in reverse engineering the missile, and are currently producing their own copy: The
Toophan.
http://www.newworldencyclopedia.org/entry/Reverse_engineering
[Health]
The Human Genome Project is perhaps the most famous example of scientific reverse engineering,
wherein scientists try to decipher human DNA to learn more about how we work as a species.
https://www.thesoftwareguild.com/blog/what-is-reverse-engineering/
[Software]
To protect against charges of having simply (and illegally) copied IBM's BIOS, Phoenix reverse-
engineered it using what's called a "clean room," or "Chinese wall," approach. First, a team of
engineers studied the IBM BIOS—about 8KB of code—and described everything it did as completely
as possible without using or referencing any actual code. Then Phoenix brought in a second team of
programmers who had no prior knowledge of the IBM BIOS and had never seen its code. Working only
from the first team's functional specifications, the second team wrote a new BIOS that operated as
specified.
http://www.computerworld.com/article/2585652/app-development/reverse-engineering.html
It's important for individuals to understand that there are legal/moral/ethical questions with respect to
Reverse Engineering. Referencing the age-old saying, 'Just because you CAN doesn't mean you
SHOULD', Reverse Engineering is a process that should be entered into intentionally and for the right
motives. Laws vary from country to country, but many include various legal repercussions for the
nefarious use of Reverse Engineering.
In the United States and many other countries, even if an artifact or process is protected by trade
secrets, reverse-engineering the artifact or process is often lawful as long as it is obtained legitimately.
9 of 14
Reverse Engineering
MENTOR2
Patents, on the other hand, need a public disclosure of an invention, and therefore patented items do not
necessarily have to be reverse engineered to be studied. One common motivation of reverse engineers
is to determine whether a competitor's product contains patent infringements or copyright
infringements.
Reverse engineering software or hardware systems which is done for the purposes of interoperability
(for example, to support undocumented file formats or undocumented hardware peripherals), is mostly
believed to be legal, though patent owners often contest this and attempt to stifle any reverse
engineering of their products for any reason.
"…[W]here disassembly is the only way to gain access to the ideas and functional elements embodied
in a copyrighted computer program and where there is a legitimate reason for seeking such access,
disassembly is a fair use of the copyrighted work, as a matter of law."[9]
http://www.newworldencyclopedia.org/entry/Reverse_engineering
There are also benefits to reverse engineering. Reverse engineering might be used as a way to allow
products to interoperate. Also reverse engineering can be used as a check so that computer software
isn't performing harmful, unethical, or illegal activities.
https://ethics.csc.ncsu.edu/intellectual/reverse/study.php
Jon Johansen, a leading proponent of open source design, says; “Basically, if reverse engineering is
banned, then a lot of the open source community is doomed to fail.”
Slide 17 – Is Reverse Engineering Legal?
As you might expect, reverse engineering is a complicated subject in law. Firstly, it is important to note
that there is little point in reverse engineering a patented process to duplicate it. Patents are a matter of
public record and the process is fully documented. However, many patents are reverse engineered in
order to examine whether they impinge on the patents (or copyright) of other intellectual property.
The legal environment for reverse engineering differs from country to country (and sometimes from
state to state). This means that before conducting any form of reverse engineering in a design or
development project; you should take legal advice. Even seemingly ethical reverse engineering projects
may be in contravention of this complex area of law. The last thing you need on any project is to leave
you and/or your business open to civil and/or criminal liability.
In the same respect if you believe your own intellectual property has been reverse engineered and either
your copyright or patents infringed upon – you should take legal advice as to what means of redress are
open to you. Be prepared for large legal fees which may, for smaller businesses at least, make it
difficult if not impossible to remedy the situation through the courts.
https://www.interaction-design.org/literature/article/reverse-engineering-conceptual-definition-heading-
back-to-where-we-started
This is a patent obtained from the US Patent Office for a faucet. See that there would be little need to
Reverse Engineer this product as the patent clearly indicates functionality, form, etc.
11 of 14
Reverse Engineering
MENTOR2
https://patentimages.storage.googleapis.com/pages/US1212806-0.png
Stop and brainstorm. Have some discussion. Point out the differences between legal and ethical.
Reinforce that Reverse Engineering is a process. Like any good process, there are standards and
accepted methods for implementation. One of the main Reverse Engineering approaches, seen
especially in the Reverse Engineering of software, is the 'Clean Room' design. The main idea here is
that you incorporate degrees of separation into the Reverse Engineering process. As an example,
Person 1 would 'take apart' the product or software by writing down key functions, aspects, properties
and capabilities of the product. This description would be in words only and would then be passed to
Person 2, who would re-create the product based on what they read in Person 1's description. One of
the key points in the Clean Room approach is that Person 2 never actually touches, sees, or operates
the product. They are completely removed from the actual product by the 'Chinese Wall' that only
allows the passing of written description.
12 of 14
Reverse Engineering
MENTOR2
http://www.computerworld.com/article/2585652/app-development/reverse-engineering.html
The 'Clean Room' approach is especially useful as it helps companies avoid copyright infringement. As
copyright generally deals with the aesthetics of a product, the 'Chinese Wall' prevents the passing of
such information to Person 2 and thereby offers a stronger opportunity for only functionality/capability
to be mimicked and not the look/feel (note that this is not a guaranteed and that there is a 'gray area' in
copyright law that is open to interpretation). This approach provides for human variation to enter the
design, as well, again creating an opportunity for divergence between the original and Reverse
Engineered product.
Slides 23 – 25 are adapted from the textbook 'Reverse Engineering' edited by Vinesh Raja and Kiran J.
Fernandes and published as part of the Springer Series in Advanced Manufacturing.
There is a Small-group exercise document 'smallGroupDay1.pdf' that details a 'Clean Room' project.
The project is meant to give individuals the experience of being on each side of the 'Chinese Wall' and
includes time for discussion/interpretation in small-groups and to the larger group as a whole.
Debrief on the previous topics. Have individuals ask questions. You could include some time here to
have people bring out computers/phones and Google their own Reverse Engineering examples or try to
find some additional information to supplement the talk to this point. Recap with some discussion on
what was learned. Was there new content introduced? Was there content that you thought you knew but
found out through the lecture materials that your interpretation was incomplete or incorrect? Try to
have at least three to four share (obviously, the more the better).
If desired, this is where we would introduce the DBAT and walk them through it. We can use the same
13 of 14
Reverse Engineering
MENTOR2
Small Group project done previously to come up with a second design that needs to be entered into
DBAT. This would give more opportunity for team work and brainstorming and would allow the
individuals to practice with the DBAT tool as well (thereby reinforcing Reverse Engineering concepts
while learning the new DBAT skill).
There is a document entitled 'teamMainDay1.pdf' which contains this project. The project is mainly
based on 3D printing, so efforts would need to be made to modify the project if additional
manufacturing tools (e.g., milling, CNC, etc.) are to be included in the project. It is expected that this
project would be at least one day and likely longer. It's best if there is enough time for teams to work
through an initial design and have it printing before they leave for the day. It's also beneficial to
instruct teams on best practices for using 3D printers. Namely, that you can use the 3D printers to test
'proof-of-concept' for functionality/form/fit by printing smaller parts, decreasing density, increasing
print speed, etc. This is a great way to also discuss the trade-offs in 3D printing (e.g., increasing print
speed means I get the part faster but may result in a part that is not as 'clean' or 'polished').
Important to note that this is an actual project that could be purchased (cheaply, via Amazon) and
actually Reversed Engineered. We could compare the 3D printed parts to the actual part.
https://www.amazon.com/Tomlinson-Replacement-Cooler-Faucet-
White/dp/B000BARBGK/ref=sr_1_3?ie=UTF8&qid=1489591223&sr=8-3&keywords=plastic+faucet
14 of 14