Windows System Programming Course 3 Trainsec

Windows System Programming 3: DLLs, Security and COM

Complete your Windows API foundation with DLLs, security and COM. In the final part of the series, Pavel Yosifovich, author of Windows 10 System Programming and co-author of Windows Internals, covers building and loading DLLs, DllMain and the loader lock, DLL injection techniques, access tokens, privileges, UAC and security descriptors, COM as a client, and the Win32 windowing model.

46 Lessons | Community Access
Lifetime access
$199

or $100 X 2 installments

blue depth
Windows master developer badge 1

This course is part of Windows Master Developer

$1,478 or $150 X 10 installments
Trusted by 10K+ students and companies
Sentinel one logo white
microsoft logo white
google logo white
mandiant logo white
intel logo white
cisco white logo tr
citibank logo white
alfa bank logo white
malwarebytes logo white
proofpoint logo white
epam logo white
Sentinel one logo white
microsoft logo white
google logo white
mandiant logo white
intel logo white
cisco white logo tr
citibank logo white
alfa bank logo white
malwarebytes logo white
proofpoint logo white
epam logo white

9+ hours

on-demand video

Demos

live-coded in Visual Studio

43

video lessons

3

downloadable resources

9 CPE

CEU credits, self-reported

Certification

Certificate of completion

Windows System Programming 3: DLLs, security and COM

Three Windows topics trip up even experienced developers. DLLs look simple until a DllMain deadlocks under the loader lock. The security model looks like a permissions checkbox until a process runs with the wrong token, a privilege is not enabled or UAC virtualizes a write. COM looks like a single CoCreateInstance call until it fails with “class not registered”. This final part of the series explains all three from the API up.

In this course Pavel Yosifovich completes the Windows System Programming series. You build DLLs and export functions, variables and classes, compare implicit, explicit and delay-load linking, write a safe DllMain and use thread local storage. You then see how DLL injection is built from documented APIs (remote threads, APCs and Windows hooks), as a study of the API rather than an attack course. The security module covers the logon architecture, SIDs, access tokens, launching processes as another user and impersonation, privileges, security descriptors and access checks, UAC and integrity levels. The COM module is a client-side introduction to activation, smart pointers, type libraries and registration, and the course ends with the Win32 windowing model.

The course is a recording of a live class: 43 video lessons, with the slides, a labs PDF and the code. The topics are live-coded in Visual Studio and inspected with Process Explorer and other tools. Every video has English captions, and you learn at your own pace with lifetime access.

Pavel Yosifovich
Pavel Yosifovich
Developer, trainer, author and (sometimes) speaker. Co-founder of TrainSec academy.

Pavel is the author of “Windows 10 System Programming”, “Windows Kernel Programming” and “Windows Native API Programming”, the co-author of “Windows Internals, 7th Edition, Part 1” (Microsoft Press), and a Microsoft MVP, with more than 25 years as a developer, consultant, trainer, author and speaker.

He writes Windows system software every day, and teaches the API the same way: with the internals behind each call, the tools to see what is happening, and labs that turn every topic into a working program.

What you will learn in the Windows System Programming 3 course

Who is this Windows security programming course for?

  • Developers who finished Windows System Programming 1 and 2 and want the last block of the series: DLLs, security, COM and windowing.
  • C and C++ developers who build or consume DLLs and want to understand implicit and explicit linking, DllMain, the loader lock and thread local storage properly.
  • Developers who work with the Windows security model in code: tokens, SIDs, privileges, impersonation, launching processes as another user, UAC and integrity levels.
  • Security-minded developers and researchers who want to see how DLL injection and Windows hooks are built from documented APIs, as an API study rather than an attack course.
  • Developers who call COM-based Windows APIs and want to understand activation, registration and smart pointers before a full COM course.

Not the right fit if you have not yet covered handles, threads, synchronization and memory (take part 1 and part 2 first), if you want to write COM servers in depth (take COM Programming 1), or if you are looking for offensive tradecraft.

What do you need before you start?

  • Windows System Programming 1 and 2, or equivalent knowledge of handles, processes, threads, synchronization and memory. This is the final part of the series.
  • Comfortable C++: the code uses classes, smart pointers and templates.
  • A Windows 10 or 11 PC with Visual Studio and the C++ workload. Some demos need administrator rights. Your main machine is fine. On a Mac, you can use Windows on ARM in Parallels.

What does the Windows System Programming 3 course cover?

Windows System Programming 3 is the final part of the three-part series on the documented Windows API. Windows System Programming 1 covers the API conventions, kernel objects and processes, and Windows System Programming 2 covers jobs, threads, synchronization, I/O and memory. This part completes the foundation with DLLs, security, COM fundamentals and windowing.

Every topic is live-coded in Visual Studio and inspected with tools such as Process Explorer, OleView and Spy++, so you see exactly what the code does to the system.

Why the Windows security model matters to developers

Almost every “access denied”, every elevation prompt and every surprise from UAC comes down to tokens, privileges, integrity levels and security descriptors. Developers of services, installers, administration tools and security products need to understand them to write software that works correctly with least privilege. Security researchers need the same knowledge to understand what a process can and cannot do, and how DLLs end up loaded where they should not be.

DLLs, COM and windows: the last pieces of the foundation

DLLs are how nearly all Windows code is packaged and loaded, COM is how much of Windows exposes its functionality, and windows and message loops are how every desktop application works. Together with parts 1 and 2, this course gives you the complete user-mode foundation for COM Programming 1, GUI Programming with WTL and Windows Kernel Programming 1. It is part of the Windows Master Developer learning path and the Windows System Programming Bundle.

What does each chapter of the course cover?

Introduction

An overview of the final part of the series and its four topics: dynamic link libraries, Windows security, an introduction to COM, and basic windowing. The slides, the labs PDF and the code are available here.

Dynamic Link Libraries

DLLs from end to end. You learn their structure and purpose, build a DLL in Visual Studio and export functions, variables and classes with declspec or a module definition file, and consume it with implicit and explicit linking, including name mangling. The chapter covers DllMain and its reason codes, the loader lock, and thread local storage. It also shows how DLL injection is built from documented APIs, with a remote thread, a user-mode APC and Windows hooks, and how visible each method is.

Security

The Windows security model in code. The chapter covers the logon architecture and how access tokens are created, security identifiers and their lookup APIs, primary and impersonation tokens, logon sessions and the UAC split token. You learn to query token information, launch processes under another identity or elevated, impersonate, and enable privileges. Then security descriptors, ACEs and SDDL, how the access check is decided, User Account Control and virtualization, running elevated, and integrity levels.

COM Fundamentals

A client-side introduction to COM. You learn why COM exists, interfaces and IUnknown, GUIDs and HRESULTs, and in-process and out-of-process servers. You follow a BITS background download client, rewrite it with ATL and WIL smart pointers, and trace what CoCreateInstance does underneath: class factories and registry keys. The chapter also covers OleView, type libraries and #import, registration with 32-bit and 64-bit views, and Explorer extensibility such as icon handlers.

Windowing

The Win32 windowing model and a course wrap-up. You build a basic GUI application to understand window classes, window creation, the message loop, window procedures and painting, see why blocking the UI thread makes a window stop responding, and keep it responsive with the thread pool and custom messages. The chapter demonstrates WinSpy and Spy++ and ends with a recap and further resources.

Windows System Programming 3: frequently asked questions

Do I need parts 1 and 2 first?

Yes, or equivalent knowledge. This is the final part of the series, and lessons such as DLL injection reuse the process, thread and memory APIs from Windows System Programming 1 and Windows System Programming 2.

Is this an offensive security course?

No. DLL injection is shown as a combination of documented Windows APIs, with notes on how visible each method is, as part of understanding DLLs and processes. For the security track, see Malware Analysis and Development.

How deep is the security module?

It covers the logon architecture, SIDs, access tokens, launching processes as another user, impersonation, privileges, security descriptors and access checks, UAC, virtualization and integrity levels, all in code.

Does it teach writing COM servers?

No. The COM module is a client-side introduction: activation, smart pointers, type libraries and registration. Writing COM servers, ATL and apartments are covered in COM Programming 1 and COM Programming 2.

Does it teach GUI programming?

Only the fundamentals: window classes, the message loop, window procedures and painting, and keeping the UI responsive. For building real GUI applications in C++, take GUI Programming with WTL.

What do I need installed?

A Windows 10 or 11 PC with Visual Studio and its C++ workload, plus free tools such as Process Explorer, OleView and Spy++. Some demos need administrator rights.

Are there labs?

The topics are live-coded in Visual Studio during the lessons, and a labs PDF with the lab code is included as a download.

Is the course live or recorded?

Recorded and self-paced. It is a recording of a live class. You get lifetime access, and every video has English captions.

What should I take after this course?

COM Programming 1 if COM is relevant to your work, GUI Programming with WTL for desktop applications, or Windows Kernel Programming 1 to move into kernel mode. All are part of the Windows Master Developer learning path.

Do I get a certificate?

Yes. When you complete every lesson you receive a certificate of completion and a Credly digital badge. The course also earns 9 CPE/CEU credits, which you self-report to your certification body using your certificate.

Can I watch a lesson before I buy?

Yes. The DLL Introduction lesson is free to preview. Watch it on the course page.

How long does the course take?

43 video lessons, more than 9 hours of video, plus lab time. Most students spread it over a couple of weeks.

How much does it cost, and is there a payment plan?

$199 as a single payment, or 2 monthly payments of $100 ($200 in total). All three parts together are cheaper as the Windows System Programming Bundle: $749, or 5 payments of $150.

How long do I have access?

Lifetime access to the purchased course.

Can I get a refund?

Yes. Refunds are available up to 14 days after purchase, to the original payment method. Email [email protected].

Pavel Yosifovich
Pavel Yosifovich
Developer, trainer, author and (sometimes) speaker. Co-founder of TrainSec academy.

Pavel is the author of “Windows 10 System Programming”, “Windows Kernel Programming” and “Windows Native API Programming”, the co-author of “Windows Internals, 7th Edition, Part 1” (Microsoft Press), and a Microsoft MVP, with more than 25 years as a developer, consultant, trainer, author and speaker.

He writes Windows system software every day, and teaches the API the same way: with the internals behind each call, the tools to see what is happening, and labs that turn every topic into a working program.

Windows System Programming Course 3 Trainsec
Windows System Programming 3
$199 or 2 × $100

Complete your Windows API foundation with DLLs, security and COM. In the final part of the series, Pavel Yosifovich, author of Windows 10 System Programming and co-author of Windows Internals, covers building and loading DLLs, DllMain and the loader lock, DLL injection techniques, access tokens, privileges, UAC and security descriptors, COM as a client, and the Win32 windowing model.