SREN 410 Lecture Notes 1
SREN 410 Lecture Notes 1
Lecture 1: Introduction to
Software Reverse Engineering
Course Lecturer: Dr. B. Kankuzi, Dept of
CSIT, MUST
PREAMBLE
Prescribed textbooks
Eilam, E. (2005). Reversing: Secrets of Reverse
Engineering. Indianapolis, IN: Wiley Publishing,
Inc.
Dang, B., Gazet, A., Bachaalany, E. (2014).
Practical Reverse Engineering: x86, x64, ARM,
Windows Kernel, Reversing Tools, and
Obfuscation. Wiley.
A study guide has also been provided.
2
LESSON OUTCOMES
Define the concept of reverse engineering in
general.
Explain the concept of software reverse
engineering and how it relates to the general
concept of reverse engineering.
Distinguish different types of software reverse
engineering.
Explain the role of low-level software in software
reverse engineering.
Explain the various approaches to software
reverse engineering.
Distinguish and practically install various tools
used in software reverse engineering.
Explain legal implications of software reverse
engineering 3
INTRODUCTION
Reverse engineering, in general, is the
process of extracting the knowledge or
design blueprints from anything man-made.
Reverse engineering is usually conducted to
obtain missing knowledge, ideas, and design
philosophy when such information is
unavailable.
Software reverse engineering is essentially
reverse engineering particularly applied to
software.
This lecture gives a brief introduction to
software reverse engineering.
4
WHY SOFTWARE REVERSE ENGINEERING?
In most industries, reverse engineering is for
the purpose of developing competing
products.
In the software industry, however, this is not
the case because software is complex and as
such, reversing it to develop competing
software products might not be financially
viable.
In the software industry, therefore, reversing
is for the purposes of security and as a tool
useful in software-development activities.
5
WHY SOFTWARE REVERSE ENGINEERING?
(CONT’D)
Security-related software reverse
engineering is concerned with different
aspects of computer security.
For example, malicious software can be reversed
in order to understand how it works in order to
develop an antidote for it.
6
WHY SOFTWARE REVERSE ENGINEERING?
(CONT’D)
Software development-related software
reverse engineering is concerned with how
software developers can employ reversing
techniques to understand undocumented or
partially documented software.
In other cases, reversing can be used to
determine the quality of third-party code, such
as a code library.
7
ROLE OF LOW-LEVEL SOFTWARE IN
SOFTWARE REVERSE ENGINEERING
8
ROLE OF LOW-LEVEL SOFTWARE IN SOFTWARE
REVERSE ENGINEERING (CONT’D)
9
ROLE OF LOW-LEVEL SOFTWARE IN SOFTWARE
REVERSE ENGINEERING (CONT’D)
10
APPROACHES TO SOFTWARE REVERSE
ENGINEERING
11
APPROACHES TO SOFTWARE REVERSE
ENGINEERING
12
APPROACHES TO SOFTWARE REVERSE
ENGINEERING (CONT’D)
14
APPROACHES TO SOFTWARE REVERSE
ENGINEERING (CONT’D)
15
APPROACHES TO SOFTWARE REVERSE
ENGINEERING (CONT’D)
16
APPROACHES TO SOFTWARE REVERSE
ENGINEERING (CONT’D)
17
TOOLS FOR SOFTWARE REVERSE
ENGINEERING
18
TOOLS FOR SOFTWARE REVERSE
ENGINEERING (CONT’D)
19
TOOLS FOR SOFTWARE REVERSE
ENGINEERING (CONT’D)
20
TOOLS FOR SOFTWARE REVERSE
ENGINEERING (CONT’D)
21
TOOLS FOR SOFTWARE REVERSE
ENGINEERING (CONT’D)
Fig 1: Assembly code on the left and decompiled code on the right 22
in Snowman
TOOLS FOR SOFTWARE REVERSE
ENGINEERING (CONT’D)
24
CONCLUSION
25
CONCLUSION (CONT’D)
27
END OF LECTURE 1
THANK YOU!
28
REFERENCES & FURTHER READING
Eilam, E. (2005). Reversing: Secrets of
Reverse Engineering. Indianapolis, IN: Wiley
Publishing, Inc.
Dang, B., Gazet, A., Bachaalany, E. (2014).
Practical Reverse Engineering: x86, x64,
ARM, Windows Kernel, Reversing Tools, and
Obfuscation. Wiley.
Eagle, C. (2011). The IDA Pro Book: The
Unofficial Guide to the World’s Most Popular
Disassembler, 2nd Edition. No Starch Press.
Dennis, Y. (2016). Reverse Engineering for
Beginners (E-Reader Version). Retrieved
from http://beginners.re/RE4B-EN.pdf 29