What is Software Reverse Engineering?
Why do we need it?
Where it is used?
Scope and Tasks
3. Reverse Engineering
Reverse engineering also called back engineering,
is the processes of extracting knowledge or design
information from anything man-made and re-
producing it based on the extracted information.
4. Software Reverse Engineering
It is the process of analyzing a software system to
extract design and implementation information
and create representations of the system in another
form or at a higher level of abstraction.
6. Why we need it?
Recovery of lost information
Providing proper system documentation
Assisting with maintenance
Facility of software reuse
Synthesize higher abstraction
Discovering unexpected flaws and faults
7. Where it is used?
In software design, reverse engineering enables
the developer or programmer to add new
features to the existing software with or without
knowing the source code.
Reverse engineering is also very beneficial in
software testing, it helps the testers to study the
virus and other malware code.
The third category where reverse engineering is
widely used is in software security.(Malicious
Software, Cryptographic algorithms)
8. Reverse Engineering Tools
System Monitoring Tools
• Network activity, file access and register
• Translate binary code to assembly code
• It used in disassembling mode to set break
points and step through program execution
• Attempt to produce high level code (e.g, c)
from an executable binary code.
• Read executing program from RAM
• Enable the editing of running hexadecimal
10. The Reversing Process
System Level Process
• Techniques that help to determine the internal
• Most of the information comes from O/S ,hence
O/S monitoring utilities.
Code Level Process
• Techniques provides detailed information from
selected code segment
• Involves extracting design concepts and
algorithms from the binary code
11. Scope and Task of SRE
Redocumentation and/or documentation
Recovery of design approach and design details
at any level of abstraction.
Identify reusable components
Understanding high level system design
Illegal and frowned upon
Limited understanding of design, research time
Bugs may be introduced during the process
Lack of information may cause failure
• Software Reverse Engineering is a new research
area among software maintenance
• It includes activities of understanding the system
and recovery info from system
• Program understanding is the most important
subset of Reverse Engineering
• Discovery of abstraction is key issue
Reverse Engineering and Design Recovery: A
Taxonomy by Elliot J. Chikofsky and James H.
The Problem of Reverse Engineering by Robert W.
Gomulkiewicz and Mary L. Williamson
Answers, Limitation of Reverse Engineering
Wikipedia, Reverse Engineering
Informit, Reverse Engineering Principles