Reverse Engineering Professional: The Most Practical and Comprehensive Training Course On Reverse Engineering
Reverse Engineering Professional: The Most Practical and Comprehensive Training Course On Reverse Engineering
Reverse Engineering Professional: The Most Practical and Comprehensive Training Course On Reverse Engineering
VERSION 1.2
The most practical and comprehensive training course on reverse engineering.
INTRODUCTION
COURSE DESCRIPTION
This fundamental self-study course teaches you the theoretical and practical knowledge
required to perform advanced reverse engineering of third-party software and malware
on the assembly language level.
This course will not leave you with a superficial understanding of how to use reversing
tools; rather, through a series of lessons and several challenges, you will be taught all the
necessary skills to succeed as a professional.
This training is based on Windows NT architecture (XP, Vista, 7, 8), since malware and
vulnerability researchers, as well as software pirates, still typically target these operating
systems.
During your advanced reverse engineering training, you will learn several methods used
to identify, isolate, and finally, analyze portions of code which are of high interest. You will
also learn about the most common Windows APIs utilized for file, memory, and registry
manipulation by either software protections (such as packers) or malware.
Additionally, the training focuses on several packers in order to give the you all the
essential knowledge and understanding of manual unpacking software. This is one of the
most important parts of advanced reverse engineering.
On top of all these exciting topics, you will also get insights into the most common anti-
reversing tricks, including different code obfuscation methods. Not only will you analyze
their mechanisms, but also learn how these can be bypassed in order to successfully
perform the reverse engineering process.
p. 2
This reverse engineering training course is highly practical, meaning you will learn things by
doing rather than by listening to instructors and watching videos. If you like the “learning-
by-doing” approach, then this course is for you. This is NOT a “learn–repeat–forget” type
of training. The course’s guidance ensures that you will get all the necessary knowledge
along the way.
The Reverse Engineering Professional training course provides the foundation for current
or future malware researchers. If you are involved in any kind of software development,
you will benefit from learning how pirates attempt to bypass your protection. In turn, you
will be able to create smarter and more sophisticated ways to keep pirates away, and as
efficiently as possible.
p. 3
The answer to these questions are very simple. Your achievements will be clear. Each
practical module of the course has a reversing challenge associated with it. We will solve
these together while explaining to you all the necessary concepts. You are then free to
practice the labs as long as you want. If you solve a challenge, that demonstrates that you
learned and properly understood the concepts taught in the module.
p. 4
FOUNDATIONS
TECHNICAL: PART 1
All the following chapters include practical challenges, which we discuss in the written
part and/or during the video demos:
TECHNICAL: PART 2
All the following chapters include practical challenges, which we discuss in the written
part and/or during the video demos:
p. 5
1.1 Introduction
1.2 What is Reverse Engineering
1.3 Do We Need Reverse Engineering?
1.4 The Basics Behind The Intel IA-32 CPU Architecture
1.4.1 General Purpose Registers
1.4.2 EFLAGS Register
1.4.3 Segment Registers
1.4.4 Instruction Pointer Register
1.4.5 Debug Registers
1.4.6 Machine Specific Registers (MSRs)
1.5 Conclusion
p. 6
2.1 Introduction
2.2 Functions
2.3 Process vs. Thread
2.4 Function Calling
2.5 Stack Frames
2.5.1 Setting Up The Stack Frame - A Graphical Example
2.6 Calling Conventions
2.7 Reading EIP - A Simple Trick
2.8 Conclusion
3.1 Introduction
3.2 Heaps
3.3 Handles
3.4 Exceptions
3.5 Basic Windows Ring3 Internal Structures
3.6 Windows APIs
3.7 Types of Reversing Tools
3.8 Conclusion
p. 7
4.1 Introduction
4.2 VA/RVA/OFFSET
4.2.1 Why Do We Need All This Information?
4.3 Overview of the Portable Executable File Format (PE)
4.3.1 MS-DOS Header
4.3.2 IMAGE_NT_HEADERS Structure (PE Header)
4.3.2.1 IMAGE_FILE_HEADER Structure
4.3.2.2 IMAGE_OPTIONAL_HEADER Structure
4.3.3 IMAGE_DATA_DIRECTORY Structure
4.3.4 The Section Table
4.4 Memory and File Alignment
4.5 Conclusion
p. 8
5.1 Introduction
5.2 String References
5.3 A Few Words Before Starting
5.4 Let’s Start . . .
5.4.1 Run the Target Executable and Observe its Functionality
5.4.2 Load the Executable in the Olly Debugger
5.4.3 Search for String References
5.4.4 Reversing the Logic
5.4.5 Basic Memory Patching
5.4.6 Executable Patching Through Olly
5.4.7 VA -> OFFSET Manual Calculation
5.4.8 Manual Byte Patching
5.5 Conclusion
p. 9
6.1 Introduction
6.2 A Few Words Before Starting
6.3 Let’s Start . . .
6.3.1 Run and Observe
6.3.2 Load to Olly and Search for Strings
6.3.3 How is this Possible?!
6.3.4 Exploring the Stack
6.3.5 Evaluating the MessageBox API Parameters
6.3.6 Reversing the Logic
6.3.7 Patching the Code
6.4 Conclusion
7.1 Introduction
7.2 A Few Words Before Starting
7.3 Let’s Start . . .
7.3.1 Two Important Algorithms
7.4 Conclusion
p. 10
8.1 Introduction
8.2 Windows Registry
8.3 A Few Words Before Starting
8.4 Let’s Start . . .
8.4.1 Retrieving Data From Windows Registry
8.4.2 Using Hardware Breakpoints
8.4.3 Algorithm Analysis
8.4.4 Reversing the Logic
8.5 Conclusion
9.1 Introduction
9.2 A Few Words Before Starting
9.3 Let’s Start . . .
9.3.1 Getting a Handle
9.3.2 What Do We Know By Now?
9.3.3 Reading the File Contents
9.3.4 Algorithm Analysis
9.4 Conclusion
p. 11
10.1 Introduction
10.2 Categories of Anti-Reversing Tricks
10.3 A Few Words Before Starting
10.4 Direct Debugger Detection
10.5 Indirect Debugger Detection
10.6 Window Debugger Detection
10.7 Conclusion
11.1 Introduction
11.2 Process Debugger Detection
11.3 Parent Process Detection
11.4 Module Debugger Detection
11.5 Code Execution Time Detection
11.5.1 RDTSC: Read Time-Stamp Counter
11.5.2 GetTickCount API
11.6 Conclusion
p. 12
12.1 Introduction
12.2 Software vs. Hardware Breakpoints
12.3 Software Breakpoint Detection
12.4 Hardware Breakpoint Detection
12.5 Ring0 Debuggers & System Monitoring Tools Detection
12.6 Structured Exception Handling (SEH)
12.7 Unhandled Exception Filter
12.8 VM Detection
12.9 Conclusion
13.1 Introduction
13.2 Logic Flow Obfuscation
13.3 ‘NOP’ Obfuscation
13.4 Anti-Disassembler Code Obfuscation
13.5 Trampolines
13.6 Instruction Permutations
13.7 Conclusion
p. 13
14.1 Introduction
14.2 Well-known Entry Points
14.3 Methods to Reach the OEP
14.4 Packers and Tools Used
14.5 Conclusion
15.1 Introduction
15.2 Multi-Threading in Practice
15.3 Creating a New Thread
15.4 Threads Synchronization
15.5 Threads Manipulation
15.6 Debugging Multi-Thread Applications
15.7 Conclusion
p. 14
eLearnSecurity was founded with the simple mission of revolutionizing the way IT
professionals develop their information security skills. Now based in Cary, North Carolina
with offices and employees around the United States and Europe, eLearnSecurity is a
worldwide leader in cyber security training.
Through a blend of in-depth content and real-world simulations, our detailed courses,
training paths, and certifications equip businesses and individuals with the skills needed
to take on the cyber security challenges of today and tomorrow.
eLearnSecurity’s Hera Labs is an industry-leading virtual lab that offers our clients
practical penetration testing and ethical hacking experience, changing the way students
and businesses take on the future of cyber security.
Contact details:
www.elearnsecurity.com
contactus@elearnsecurity.com