The x86 Assembly course is an aggressive, three-day class targeted toward students
with minimal or non-existent exposure to the x86 assembly language. Any programming
experience is helpful, but not required. Beginning with the concept of binary storage,
the course ramps up quickly to cover 16- and 32-bit Windows-based assembly. A total
of 16 hands-on labs will include conditional branching, file input/output, console
input/output, using DOS interrupts, the C runtime library, and the Windows API.
Students will write procedures, learn about and use various function calling conventions,
including c_decl, stdcall, and fastcall. A historical examination of memory will
be covered, including segmented memory, flat memory, and the current flat memory
model. Students will be working hands-on with the stack, as well as performing stack
traces in static code. Students will also write code that directly manipulates memory.
Debuggers will be introduced and used to show the behavior of memory during code
execution.
The capstone for the course involves writing a stenography application that embeds
a message into the low-order bits of a bitmap file. Students who successfully complete
the course will be better equipped to begin reverse engineering, malware analysis,
and continue on to the Art of Exploitation Remote Exploit Development course (Developers I).
Windows is a registered trademark of Microsoft Corporation in the United States
and other countries.
Prerequisites
- General Computer knowledge
- Some programming experience is helpful, but not required
Topics
- Course Introduction
- Background Review
- x86 Assembly Background
- 16-bit vs 32-bit vs 64-bit
- x86 Arithmetic Commands
- X86 Program Structure
- VM Setup and Use
- Control Flow Instructions
- X86 Memory
- Procedures
- Prolog / Epilog
- Strings in x86
- Debugging With CodeView
- REP Commands
- File I/O
- Linking to the Windows API
- Capstone
Course Pricing
| Length |
Commercial |
Government |
| 3 Days |
$2,880.20 |
$2,400.00 |