• $380 or 4 monthly payments of $100

Windows Native API Programming

  • Course
  • 90 Lessons

The Windows native API is the “real” API user-mode code uses to talk to the kernel. This API, however, is mostly undocumented. The course teaches the fundamentals of the Native API implemented by NtDll.dll, as it relates to system calls, but not just system calls.

Contents

Course Overview

Windows exposes two faces to developers in user mode: the familiar Win32 (Windows API) layer and a far leaner, more powerful interface the operating system itself relies on - the Native API. In this course Pavel Yosifovich guides you past the Win32 façade and straight to that inner doorway. You begin with the NT architecture and the system-call path, then master the data types, processes, threads, objects and memory structures that everything in Windows is built on. Each subsequent module peels back another layer: spawning true Native executables, leveraging  the object manager’s namespace, tracing handles, using virtual memory, streaming data through the I/O manager, and editing the Registry atomically. Short labs turn every concept into working code in Visual Studio using open-source headers, so by the final lesson you can create, probe and control any kernel-backed resource from user mode-skills that underpin debuggers, forensic tools and custom loaders alike.

Course Overview.mp4
  • 15 mins
  • 60.9 MB
Preview
Windows Native API Programming.pdf
  • 1.16 MB
Windows Native API Programming Labs.pdf
  • 184 KB
WinNativeApiProgLabs.zip
  • 109 KB

Module 1: Windows System Architecture & Native API Fundamentals

Begin your native-level adventure with a clear map of the territory. First we dissect the Windows NT architecture-user mode, kernel mode, and the all-important NTDLL gateway that ties them together. Next comes a quick tour of the historical subsystems (POSIX, OS/2, Win32) to see how each layers its own personality over the same kernel. With that context we crack open the undocumented Native API: why those mysterious Nt*/Zw* pairs exist, how NTDLL funnels them into ring-0 through the system-service dispatcher, and what you can (and can’t) do that Win32 hides. We wrap up in Visual Studio: adding the open-source PHNT headers for instant prototypes and experimenting with both static and dynamic binding so you can call native functions safely from day one. By the end of the module you’ll know exactly where the Native layer sits, how to talk to it, and why it unlocks powers later module builds on.

01-Windows System Architecture
  • 26 mins
  • 85.7 MB
02-Subsystems
  • 9 mins
  • 41.2 MB
03-The Native API
  • 8 mins
  • 44.8 MB
Preview
04-System Calls
  • 9 mins
  • 48.5 MB
05-Native API Information
  • 8 mins
  • 56.7 MB
06-Using PHNT
  • 17 mins
  • 108 MB
07-Binding to Functions
  • 18 mins
  • 101 MB

Module 2: Native Data-Type Toolbox

The Native API speaks its own dialect, and this module hands you the phrasebook. Pavel demystifies the core data structures-NTSTATUS, Unicode strings, OBJECT_ATTRIBUTES, linked-list nodes, CLIENT_ID, and time types-and then drills you through a lab where you put each one to work. By the end of the module, you’ll recognize these structs on sight, know the helper macros and functions that tame them, and be ready to pass well-formed parameters into any Nt* function that appears in later modules.

01-NTSTATUS
  • 5 mins
  • 24.4 MB
02-Strings
  • 9 mins
  • 44.7 MB
03-Object Attributes
  • 14 mins
  • 81.3 MB
04-Linked Lists
  • 13 mins
  • 61.1 MB
05-Client ID
  • 10 mins
  • 47.4 MB
Preview
06-Times and Time Spans
  • 10 mins
  • 44.2 MB
07-Lab Time
  • 26 mins
  • 181 MB

Module 3: Building & Launching Native Applications

Now that you know the API’s landscape, it’s time to compile real executables that live there. This module shows how Windows treats “Native” and “Boot” applications, then guides you through creating, linking, and finally spawning a Native EXE entirely from your own code. By the end you’ll have a working sample that prints during the boot-screen phase and a clear checklist for producing-and launching-any Native-subsystem binary you need in later experiments.

01-Native Applications
  • 6 mins
  • 25.8 MB
02-Boot Applications
  • 11 mins
  • 53.6 MB
03-Visual Studio and Native Apps
  • 11 mins
  • 69.2 MB
04-Building Native Applications
  • 15 mins
  • 97.5 MB
05-Simple Native Application
  • 13 mins
  • 72 MB
06-Launching Native Applications
  • 14 mins
  • 68.9 MB

Module 4: System Information

Windows hides a vast amount of live data just below Win32. In this module you learn to pull back the curtain. Starting with NtQuerySystemInformation, you’ll enumerate processes, threads, and even every open handle on the system. Along the way Pavel demystifies the Object Manager-its types, names, and namespace hierarchy. The module wraps with a look at KUSER_SHARED_DATA, the always-mapped page that gives you fast, syscall-free access to clocks, CPU info and more. 

01-System Infromation
  • 9 mins
  • 75.1 MB
02-Example - Process Enumeration
  • 28 mins
  • 177 MB
03-Handle Enumeration
  • 15 mins
  • 133 MB
04-Objects and Types
  • 16 mins
  • 146 MB
05-Object Names
  • 19 mins
  • 149 MB
06-Object Namespace
  • 16 mins
  • 125 MB
07-KSHARED_USER_DATA
  • 4 mins
  • 31 MB

Module 5: Mastering Processes with the Native API

Processes are the backbone of Windows. This module starts with crafting a process from raw pieces-image, initial thread, parameters-before moving on to deep inspection via NtQueryInformationProcess and direct reads of the Process Environment Block. You’ll learn to suspend, resume, terminate, and tweak scheduling priority without ever touching Win32. By the end of this module, you can create, probe, and manage any process on the system using pure Native calls.

01-Creating Processes
  • 9 mins
  • 47.3 MB
02-Process Information
  • 17 mins
  • 122 MB
03-The PEB
  • 28 mins
  • 173 MB
04-Other Process APIs
  • 6 mins
  • 31.6 MB
05-Process Priority
  • 5 mins
  • 48.5 MB

Module 6: Deep-Dive into Threads & Concurrency

Processes may own resources, but threads get work done. In this module you craft threads from scratch with NtCreateThreadEx, peek into their private stacks and TEBs, and gather live stats via NtQueryInformationThread. Pavel then unpacks the Native APIs for keeping threads in line: waits, APCs, and low-level synchronization, culminating in thread-pool discussion that showcases practical concurrency patterns. By the end you’ll be comfortable creating, inspecting, synchronizing, and fine-tuning threads-skills that power everything from stealth implants to high-throughput servers.

01-Creating Threads
  • 15 mins
  • 69.2 MB
02-Labs Solutions Walkthrough
  • 34 mins
  • 275 MB
03-Thread Stack
  • 9 mins
  • 44.1 MB
04-Thread Information
  • 11 mins
  • 60.5 MB
05-Thread Synchronization
  • 11 mins
  • 57.2 MB
06-The TEB
  • 5 mins
  • 24.5 MB
07-APCs
  • 10 mins
  • 48.7 MB
08-Thread Pools
  • 7 mins
  • 38.5 MB
09-Other Thread APIs
  • 7 mins
  • 29.8 MB

Module 7: Exploring the Object Manager & Synchronization Primitives

Windows unifies named kernel objects through the Object Manager, and this module is your guided tour. You’ll map the kernel namespace, enumerate every object it contains, and learn to create, link, duplicate, and query them using pure Native calls. With a solid grasp of directory and symbolic-link objects, you pivot to the synchronization primitives-mutexes, semaphores, events-and finish by managing whole process groups with job objects. By the end of this module, you’ll not only understand how handles and objects work in the system, but also have hands-on techniques for inspecting and orchestrating those objects in your own tools and experiments.

01-Kernel Objects
  • 6 mins
  • 28.9 MB
02-Kernel Object Types
  • 11 mins
  • 94.1 MB
03-Object Enumeration
  • 8 mins
  • 48.7 MB
04-Directory Objects
  • 10 mins
  • 50 MB
05-Symbolic Link Objects
  • 7 mins
  • 58.3 MB
06-Handles and Duplication
  • 13 mins
  • 71 MB
07-Object Information
  • 2 mins
  • 8.6 MB
08-Enumeraing Handles
  • 3 mins
  • 14.4 MB
09-Mutex Objects
  • 23 mins
  • 181 MB
10-Semaphore Objects
  • 7 mins
  • 35.7 MB
11-Event Objects
  • 9 mins
  • 52.6 MB
12-Job Objects
  • 12 mins
  • 62.5 MB

Module 8: Virtual Memory & Dynamic Allocation Mastery

Memory is everywhere.. In this module, Pavel walks you from the hardware-backed basics up through high-level heaps and memory-mapped files. You’ll allocate, protect, query, and even patch memory using pure Native calls, then peek into the kernel’s view of working sets and protection bits. The journey continues with custom heaps for performance-critical tasks and finishes with section objects-the backbone of DLLs and shared memory. By the end of this module, you’ll understand, visualize, and manipulate any byte in a process’s address space with confidence.

01-Virtual Memory
  • 5 mins
  • 17 MB
02-Process Address Space
  • 5 mins
  • 16 MB
03-Virtual Page States
  • 12 mins
  • 120 MB
04-User Mode APIs
  • 5 mins
  • 15.1 MB
05-Virtual APIs
  • 11 mins
  • 51.6 MB
06-Memory Information
  • 6 mins
  • 31.7 MB
07-Reading and Writing Memory
  • 6 mins
  • 27.2 MB
08-Memory Protection
  • 2 mins
  • 12 MB
09-Heaps
  • 13 mins
  • 56.6 MB
10-Creating Heaps
  • 13 mins
  • 58.7 MB
11-More Heap APIs
  • 8 mins
  • 38.3 MB
12-Sections
  • 16 mins
  • 73.9 MB
13-Section Views
  • 10 mins
  • 51.8 MB

Module 9: Unified File & Device I/O

Whether you’re streaming from disk, pinging a driver, or ringing the PC speaker, it all rides the same I/O manager. This module teaches you to open any path, translate it into the kernel’s namespace, and push bytes through NtReadFile, NtWriteFile, or custom IOCTLs. You’ll enumerate directories, grab metadata, harness I/O completion ports for speed, and even load a driver-all with pure Native calls. By the finish, “file” will mean much more than what’s on disk: it’s the universal door to any device, physical or virtual, on Windows.

01-Files and Devices
  • 6 mins
  • 25.5 MB
02-File Objects
  • 7 mins
  • 56.3 MB
03-Working with Paths
  • 3 mins
  • 22.4 MB
04-Reading and Writing
  • 5 mins
  • 27.2 MB
05-Beep Device Example
  • 7 mins
  • 48.4 MB
06-File and Directory Information
  • 8 mins
  • 46.5 MB
07-Accessing Devices
  • 9 mins
  • 56.6 MB
08-IO Completion Ports
  • 10 mins
  • 58 MB
09-Loading Drivers
  • 5 mins
  • 26.9 MB

Module 10: Registry Secrets: Keys, Values & Atomic Edits

The Registry is Windows’ configuration database, and the Native API lets you operate on it with surgical precision. In this module Pavel demystifies its hive-backed architecture, then leads you through opening, creating, editing, and enumerating keys and values without a single Win32 call. You’ll set up change notifications for instant event-driven reactions and wrap multiple edits inside kernel-level transactions for all-or-nothing safety. By the end you’ll wield the same low-level operations used by installers, services, and malware alike-perfect for configuration tools, forensic collectors, or stealthy persistence tricks.

01-Registry Overview
  • 12 mins
  • 71.7 MB
02-Working with Keys and Values
  • 10 mins
  • 57.5 MB
03-Key and Value Enumeration
  • 5 mins
  • 23.1 MB
04-Registry Notifications and Transactions
  • 10 mins
  • 62.8 MB

Module 11: Security IDs, Tokens & Descriptors

Every access to a kernel object involves a user/group (SID) opening a handles to said object that may be protected by a Security Descriptor.  The user’s “power” is represented by its Access Token, containing its privileges and other properties. This module connects those dots. You’ll decode SIDs, inspect and duplicate tokens, enumerate logon sessions, and even create  tokens from scratch. Finally, you’ll craft security descriptors and ACLs, giving you full control over who can touch your objects—essential knowledge for access management.

01-SIDs
  • 10 mins
  • 49.8 MB
02-Access Tokens
  • 12 mins
  • 69.2 MB
03-Working with Tokens
  • 8 mins
  • 44.8 MB
04-Logon Sessions
  • 3 mins
  • 22.4 MB
05-Creating Tokens
  • 5 mins
  • 26.6 MB
06-Security Descriptors
  • 14 mins
  • 73.2 MB

What's Next?

What's Next?
  • 4 mins
  • 10.4 MB