Introduction

A Windows process is one of the most important concepts to understand before working with the WinAPI, process memory, DLL loading, shellcode execution, process injection, debugging, or malware analysis.

At a high level, a process is a running instance of a program. For example, launching notepad.exe creates a process for Notepad. Launching two separate Notepad windows usually creates two separate processes, even though both processes are backed by the same executable file on disk.

A process is not only the executable code. It is a container that includes several runtime resources, such as:

Understanding how these pieces fit together is necessary before working with more advanced Windows internals.

User vs Kernel Modes View of a Process

Knowing that Windows consists of two components: kernel mode and user mode, it is important to understand how each of these layers views and represents a process. From user mode, a process can be thought of as a container that owns and manages resources required by the application. Some of the most important user-mode components of a process include: