x86 Assembly Language and Shellcoding on Linux

x86 Assembly Language and Shellcoding on Linux

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 37 Lessons (8h 35m) | 10.46 GB

This course focuses on teaching the basics of 32-bit assembly language for the Intel Architecture (IA-32) family of processors on the Linux platform and applying it to Infosec. Once we are through with the basics, we will look at writing shellcode, encoders, decoders, crypters, and other advanced low-level applications.

A non-exhaustive list of topics to be covered include:

  • Computer Architecture Basics
  • IA-32/64 Family
  • Compilers, Assemblers and Linkers
  • CPU Modes and Memory Addressing
  • Tools of the trade
  • Nasm, Ld, Objdump, Ndisasm etc.
  • IA-32 Assembly Language
  • Registers and Flags
  • Program Structure for use with nasm
  • Data Types
  • Data Movement Instructions
  • Arithmetic instructions
  • Reading and Writing from memory
  • Conditional instructions
  • Strings and Loops
  • Interrupts, Traps and Exceptions
  • Procedures, Prologues and Epilogues
  • Syscall structure and ABI for Linux
  • Calling standard library functions
  • FPU instructions
  • MMX, SSE, SSE2 etc. instruction sets
  • Shellcoding on Linux
  • Execution environment
  • Exit and Execve shellcode
  • Bind Shell and Reverse TCP
  • Staged Shellcode
  • Egg Hunter
  • Using 3rd party shellcode
  • Simulating shellcode
  • locating syscalls
  • graphing shellcode execution
  • Encoders, Decoders and Crypters on Linux
  • Purpose of encoding and crypting
  • XOR encoders
  • Custom encoding
  • Random sequencing and scrambling
  • mapping functions
  • Crypters
  • Polymorphism
  • Why polymorphism?
  • Polymorphic engines
  • Techniques and Tools
Table of Contents

1 Course Introduction
2 What is Assembly Language
3 Setting up the Lab
4 Getting the CPU Info on Linux
5 IA-32 Architecture Basics
6 IA-32 Architecture Exercise
7 CPU Modes and Memory
8 Hello World in Assembly
9 Hello World GDB Exercise
10 Data Types
11 Moving Data
12 Understanding the Stack
13 Arithmetic Operations
14 Multiplication and Division
15 Logical Instructions
16 Control
17 Loop Exercise
18 Procedures
19 Saving CPU State
20 String in Assembly
21 Libc and NASM
22 Shellcode Basics
23 Writing Exit Shellcode
24 Hello World Shellcode using JMP-CALL-POP Technique
25 Hello World Shellcode Stack Technique
26 Execve JMP-CALL-POP
27 Execve Shellcode Stack Technique
28 XOR Encoder and Decoder
29 Using Metasploit’s Encoders
30 Simple NOT Encoder
31 Insertion Encoder
32 XOR Encoder Decoder using MMX Registers
33 Polymorphism
34 Analyzing 3rd Party Shellcode
35 Analyzing Shellcode with Libemu
36 Writing Custom Crypters
37 SLAE Exam Format

Homepage