Windows PE
Windows Architecture

User-mode vs. Kernel Mode [1]
In user-mode, an application starts a user-mode process which comes with its own private virtual address space and handle table
In kernel mode, applications share virtual address space.
This diagram shows the relationship of application components for user-mode and kernel-mode.
PE Header
The PE header provides information to operating system on how to map the file into memory. The executable code has designated regions that require a different memory protection (RWX)
Read
Write
Execute

Here is a hexcode dump of a PE header we will be working with.
Memory Layout
Stack - region of memory is added or removed using "last-in-first-out" (LIFO) procedure[2]
Heap - region for dynamic memory allocation[3]
Program Image - The PE executable code placed into memory
DLLs - Loaded DLL images that are referenced by the PE
TEB - Thread Environment Block stores information about the current running thread(s)[4]
PEB - Process Environment Block stores information about loaded modules and processes.[5]

The Stack
Data is either pushed onto or popped off of the stack data structure
EBP - Base Pointer is the register that used to store the references in the stack frame

Last updated