Skip to main content
INTERMEDIATE TO ADVANCED
20+ WEEKS
100 MODULES

Windows Malware Development

Understand modern offensive tooling by building it

You cannot reliably detect or evade what you do not understand at the implementation level. This course builds Windows offensive tooling from first principles: PE format, memory management, injection, syscalls, and the anti-analysis techniques real samples use. It is aimed at red teamers who need tooling that survives contact with modern defences, and at analysts who want to understand samples from the author's side rather than only the disassembler's. All work is for authorised red team use and defensive research, in isolated lab environments.

📦
100
Modules
20+
weeks
📋
32
Units
🎯
128
Topics

👤Who this is for

  • Red teamers whose off-the-shelf tooling keeps getting caught
  • Malware analysts who want to understand samples from the build side
  • Detection engineers who need to know what they are writing signatures against
  • Offensive security researchers building custom capability

Prerequisites

Solid C or C++ programming ability
Working knowledge of Windows internals
Comfortable with a debugger
An isolated lab environment you control

Curriculum

32 units · 128 topics · 20+ weeks

UNIT 01

Introduction to malware development

Course objectives and legal context
Lab environment setup (isolated VMs)
Development toolchain (Visual Studio, compilers)
Debugging fundamentals with x64dbg and WinDbg
UNIT 02

Windows internals: processes and threads

Process creation and the PEB
Thread architecture and TEB
Process and thread enumeration
Handle table internals
UNIT 03

Windows internals: memory management

Virtual memory and page tables
VirtualAlloc, VirtualProtect, and memory regions
Heap management and allocators
Memory-mapped files and sections
UNIT 04

Windows internals: kernel objects

Handles, tokens, and security descriptors
Access control and privilege model
Object manager internals
Interacting with the kernel from user mode
UNIT 05

The Windows API surface

Win32 API categories and documentation
NTAPI vs Win32 API
API resolution and GetProcAddress
Dynamic API loading patterns
UNIT 06

PE format fundamentals

DOS header and PE signature
COFF and optional header fields
Section table and section alignment
Rich header analysis
UNIT 07

PE format: imports and exports

Import Address Table (IAT)
Import Name Table and thunking
Export directory and ordinal resolution
Delayed imports and API sets
UNIT 08

PE format: relocations and resources

Base relocation table processing
Position-independent code principles
Resource directory structure
Embedding and extracting PE resources
UNIT 09

DLL internals

DLL loading with LoadLibrary
DllMain entry points and thread notifications
DLL search order and hijacking
DLL proxying and forwarding
UNIT 10

Shellcode fundamentals

Position-independent shellcode design
Avoiding null bytes and bad characters
Shellcode encoding techniques
Custom shellcode from scratch in assembly
UNIT 11

Payload encryption: XOR and RC4

XOR encryption and brute-force concerns
Multi-byte XOR key generation
RC4 stream cipher implementation
Encrypting and decrypting payloads at runtime
UNIT 12

Payload encryption: AES

AES-256 CBC implementation with CNG
Key derivation and IV management
Encrypting shellcode for staged delivery
Decryption stubs and in-memory execution
UNIT 13

String obfuscation and entropy

Compile-time string encryption
Stack string construction
API hashing (djb2, CRC32, custom)
Entropy analysis and management
UNIT 14

Payload staging and delivery

Staged vs stageless payloads
HTTP/S payload download and execution
UUID and MAC address shellcode smuggling
Payload retrieval from alternate sources
UNIT 15

Process injection: classic techniques

VirtualAllocEx + WriteProcessMemory + CreateRemoteThread
Target process selection and access rights
Shellcode injection walkthrough
Detection indicators of classic injection
UNIT 16

Process injection: thread hijacking

Suspending and modifying thread context
SetThreadContext for execution redirection
NtQueueApcThread and user APC injection
Early bird APC injection
UNIT 17

Process injection: advanced methods

Process hollowing (RunPE)
Process Doppelgänging with transacted files
Process herpaderping
Module stomping and phantom DLL loading
UNIT 18

DLL injection techniques

Classic DLL injection with LoadLibrary
Reflective DLL injection
Manual mapping from memory
sRDI (shellcode Reflective DLL Injection)
UNIT 19

Callback-based execution

EnumWindows and timer callbacks
Fiber-based execution
Thread pool callbacks (TpAllocWork)
Vectored exception handler abuse
UNIT 20

Direct syscalls

System call architecture on Windows
Syscall stub structure and SSN resolution
Implementing direct syscalls in C/ASM
SysWhispers and Hell's Gate techniques
UNIT 21

Indirect syscalls

Why indirect syscalls evade call-stack analysis
Implementing indirect syscall stubs
Combining with API hashing
Tartarus' Gate and Halo's Gate variants
UNIT 22

Unhooking ntdll

Understanding userland API hooking by EDRs
Reading clean ntdll from disk
Remapping ntdll from KnownDlls
Perun's Fart and fresh-copy techniques
UNIT 23

ETW and AMSI bypass

Event Tracing for Windows architecture
Patching ETW for evasion
AMSI scanning internals
AMSI bypass techniques and patch points
UNIT 24

Anti-debugging techniques

IsDebuggerPresent and PEB flags
NtQueryInformationProcess debug checks
Timing-based anti-debug (RDTSC, GetTickCount)
Hardware breakpoint detection
UNIT 25

Anti-VM and sandbox detection

Registry and file system VM indicators
CPUID and hypervisor detection
MAC address and hardware fingerprinting
User interaction checks (mouse movement, clicks)
UNIT 26

Timing-based evasion

Sleep obfuscation with Ekko and Foliage
Delayed execution to bypass sandboxes
Encrypting memory during sleep
Fluctuating thread stack spoofing
UNIT 27

Persistence mechanisms

Registry Run key persistence
Scheduled task persistence
COM object hijacking
WMI event subscription persistence
UNIT 28

Rootkit fundamentals

User-mode rootkit concepts
IAT and inline hooking
DKOM (Direct Kernel Object Manipulation) overview
Hiding processes and network connections
UNIT 29

Building a complete loader

Architecture of a production loader
Combining encryption, injection, and evasion
Staged loading with multiple layers
Error handling and operational security
UNIT 30

C2 communication basics

HTTP/S C2 communication channels
Domain fronting concepts
Named pipe and SMB channels
Sleep and jitter for traffic blending
UNIT 31

Detection engineering perspective

Understanding EDR telemetry sources
ETW providers relevant to malware
Writing YARA rules for your own tooling
Mapping techniques to MITRE ATT&CK
UNIT 32

Capstone: red team tooling project

Designing a custom implant from scratch
Integrating all course techniques
Testing against AV/EDR in an isolated lab
Code review, documentation, and OPSEC analysis

What you will be able to do

1Develop custom Windows shellcode loaders from scratch in C/C++
2Bypass common EDR and AV solutions using syscall-level techniques
3Understand Windows internals at the depth required for offensive tooling
4Build and test red team tooling in isolated lab environments
5Implement multiple process injection and evasion techniques
6Analyse the detection footprint of offensive techniques from a defender's perspective

🛠 Tools you will use

C/C++Visual StudioIDA ProGhidrax64dbgWinDbgPEViewProcess MonitorAPI Monitor

🏆 Certification pathways

This course builds directly toward:

CRTOCRTECRTL

Frequently asked questions

Is this course teaching me to write real malware?

It teaches the same techniques real malware uses, applied in isolated lab environments for authorised red team and defensive research purposes. Understanding how offensive tooling works at the implementation level is essential for both building red team capability and writing effective detections. All work stays in environments you control.

How strong does my C/C++ need to be?

You should be comfortable writing and debugging C programs that use pointers, structs, and the Windows API. The course does not teach C from scratch. If you can write a program that opens a file handle, reads memory, and handles errors, you are ready.

Will my payloads bypass current EDR products?

Some techniques will, some will not, and that changes over time. The course teaches the principles behind evasion so you can adapt, not a set of signatures that expire. Detection footprint is discussed alongside every technique so you understand both sides.

Why is this course 100 modules and 20+ weeks?

Because building offensive tooling from first principles requires covering Windows internals, PE format, multiple injection techniques, syscalls, anti-analysis, and operational considerations in genuine depth. Each module is practical, and cutting content would mean teaching surface-level awareness rather than implementation-ready skill. The length reflects the reality of the subject.

What lab setup do I need?

An isolated virtual lab with at least two VMs: a Windows development machine with Visual Studio and debugging tools, and a Windows target machine with optional AV/EDR for testing. 32 GB RAM recommended for running multiple VMs. All development and testing must stay in environments you control.

Is prior reverse engineering experience required?

Not required but helpful. The course covers PE format and debugging from the ground up. If you can read disassembly at a basic level and have used a debugger before, that helps. If not, the early units build that foundation before moving to injection and evasion techniques.

Can I use these skills defensively?

Absolutely. Every technique is taught alongside its detection footprint. The detection engineering unit covers ETW telemetry, YARA rules, and MITRE ATT&CK mapping. Many students take the course specifically to improve their blue team capability by understanding offensive tooling at the implementation level.

Interested in this training?

Reach out to discuss scheduling, format, and pricing. Corporate and group rates available.

Get in touch →View all courses

Other courses