Software Reverse Engineering
Presented by: Parminder Singh
Roll no: 1607116
Contents
 What is Software Reverse Engineering?
 Why do we need it?
 Where it is used?
 RE tools
 Scope and Tasks
 Limitations
 Conclusion
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.
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.
Engineering a
Software
Reverse
Engineering
Concept Software
Software Concept
Requirements
Analysis
Design
Implementation
Forward
Engineering
Reverse
Engineering
Software Engineering
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
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)
Reverse Engineering Tools
 System Monitoring Tools
• Network activity, file access and register
access
 Disassemblers
• Translate binary code to assembly code
 Debuggers
• It used in disassembling mode to set break
points and step through program execution
Continue…
 Decompilers
• Attempt to produce high level code (e.g, c)
from an executable binary code.
 Hex Editors
• Read executing program from RAM
• Enable the editing of running hexadecimal
code
The Reversing Process
 System Level Process
• Techniques that help to determine the internal
structure.
• 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
Scope and Task of SRE
 Redocumentation and/or documentation
generation
 Recovery of design approach and design details
at any level of abstraction.
 Identify reusable components
 Understanding high level system design
Limitations
 Illegal and frowned upon
 Limited understanding of design, research time
and cost
 Bugs may be introduced during the process
 Lack of information may cause failure
Conclusion
• 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
References
 Reverse Engineering and Design Recovery: A
Taxonomy by Elliot J. Chikofsky and James H.
Cross II
 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
Thank you.. and any..

Software reverse engineering

  • 1.
    Software Reverse Engineering Presentedby: Parminder Singh Roll no: 1607116
  • 2.
    Contents  What isSoftware Reverse Engineering?  Why do we need it?  Where it is used?  RE tools  Scope and Tasks  Limitations  Conclusion
  • 3.
    Reverse Engineering Reverse engineeringalso 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 Itis 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. Engineering a Software Reverse Engineering Concept Software Software Concept
  • 5.
  • 6.
    Why we needit?  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 isused?  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 access  Disassemblers • Translate binary code to assembly code  Debuggers • It used in disassembling mode to set break points and step through program execution
  • 9.
    Continue…  Decompilers • Attemptto produce high level code (e.g, c) from an executable binary code.  Hex Editors • Read executing program from RAM • Enable the editing of running hexadecimal code
  • 10.
    The Reversing Process System Level Process • Techniques that help to determine the internal structure. • 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 Taskof SRE  Redocumentation and/or documentation generation  Recovery of design approach and design details at any level of abstraction.  Identify reusable components  Understanding high level system design
  • 12.
    Limitations  Illegal andfrowned upon  Limited understanding of design, research time and cost  Bugs may be introduced during the process  Lack of information may cause failure
  • 13.
    Conclusion • Software ReverseEngineering 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
  • 14.
    References  Reverse Engineeringand Design Recovery: A Taxonomy by Elliot J. Chikofsky and James H. Cross II  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
  • 15.