Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Engineering
What is Reverse
Engineering ?
Reverse Engineering
What is Reverse
Engineering ?
What is Reverse
Engineering ?
In Terms of Software
Reverse Engineering
Applications:
Security Related
Reversing has been employed in
encryption research
With malicious software, on both ends
of the fence
Crackers
Reverse Engineering
Applications:
Why do we need RE ?
Reasons
Product Analysis
To examine how a product works, what
components it consists of, estimate costs, and
identify potential patent infringement.
Lost Documentation
Reverse engineering often is done
because the documentation of a particular
device has been lost (or was never written),
and the person who built it is no longer
Why do we need RE ?
Reasons
Software Modernization
In order to understand the 'as is' state of
existing or legacy software in order to properly
estimate the effort required to migrate system
knowledge into a 'to be' state.
Learning
Learn from others' mistakes. Do not
make the same mistakes that others have
already made and subsequently corrected.
Why do we need RE ?
Reasons
The original manufacturer of a product
no longer produces a product
The original manufacturer no longer
exists, but a customer needs the
product
To analyze the good and bad features of
competitors' product
Strengthen the good features of a
product based on long-term usage of
Why do we need RE ?
Benefits
Understand existing design
Quality improvements
Competitive advantages
Software reuse facilitation
No need to start from scratch
Requirement
s
Analysis
Forward
engineering
Reverse
engineering
Design
Implementation
Software engineering
Procedure
Collect information
Examine information
Procedure
Extract structure
Record functionality
Procedure
Record data-flow
Record control-flow
Procedure
Generate documentation
Disassembler
Converts exe to assembly - as best it
can
Relatively simple process
Sometimes are difficult to
understand
Debugger
Reversers use debuggers in
disassembly mode
Reversers can install breakpoints in
locations of interest in the
disassembled code and then examine
the state of the program
Decompiler
Unethical ???
Thank
You!!!