Windows Internals Brown

Windows Internals
Brown-Bag Seminar
Chapter 1 – Concepts and Tools
Jim Fawcett
Fall 2006
Windows Internals
• Chap 1 – Concepts and Tools
•
•
•
•
•
•
Chap 2 – System Archit.
Chap 3 – System Mech.
Chap 4 – Mgmt Mech.
Chap 5 – Startup/Shutdown
Chap 6 – Processes, Threads
Chap 7 – Memory Mgmt
•
•
•
•
•
•
•
Chap 8 – Security
Chap 9 – I/O System
Chap 10 – Storage Mgmt
Chap 11 – Cache Mgr
Chap 12 – File Systems
Chap 13 – Networking
Chap 14 – Crash Dump Anal.
Resources
• Windows Internals, Fourth Edition, Russinovich, Solomon,
Microsoft Press, 2005
• Windows System Programming, Third Edition, Johnson
Hart, Addison-Wesley, 2005
• Win32 Links – a random sampling of interesting things:
–
–
–
–
–
Display Win32 and COM error strings
Accessing data in another process
Injecting and Executing code in another process
Windows Security with code examples
ShellExecute and Automation
– Windows Hooks
– Win32 Message Maps and Message Cracking
• Windows Annoyances
Windows API
•
•
•
•
•
•
Overview
Base Services
Component Services
User Interface Services
Graphics and Multimedia Services
Networking
Web Services
More Resources
•
•
•
•
•
•
•
CoreTechnologies
Overview of Windows API
Windows Data Types
Windows API Functions by category
Windows Shell
Win32 to .Net Map
Platform SDK
Windows Programming Levels
• .Net Framework Class Library
– Many namespaces of managed code
• Windows API Functions
– Documented, callable functions exported from
user32.dll, gdi32.dll, advapi32.dll, and kernel32.dll
• Native System Services
– Undocumented services callable from user mode
• Kernel Support Functions
– Windows OS routines, callable only from the
kernel.
Some Examples
• fileInfo, Nav, and Wintools
• Threads
• Creating and Loading DLLs
Windows Processes
• A process is a container of resources used
by an executing program
–
–
–
–
–
–
Private virtual address space
Executable program
List of open handles
A security context, e.g., access token
process ID
One or more threads of execution
process handle
Process
module handle
Process Code
Global Memory
shared by threads, user serialized
Thread Stack, Thread Local Storage
DLL Code
Thread Stack, Thread Local Storage
Heap Allocations
Other
Heaps
Default Process Heap
heap handle
serialized by Windows,
used by Win32 functions
Main (UI) Thread
can be
serialized by
Windows
Worker Thread
send or post
messages
only
thread handle
window
Brush handle
window
Pen Handle
window handle
window handle
heap handle
thread handle
Virtual Memory Mapping
Physical Memory
Virtual Memory
hardware
mapping
Processing Modes
• User mode
– User mode runs user application code. In user mode, a
process has access to a private virtual address space,
shared by all threads that run in the process.
• Kernel mode
– Kernel mode is used to run OS code and device drivers, as
well as a lot of the Graphics and Windowing code. In kernel
mode, threads have unlimited access to the OS’s virtual
system memory and all CPU instructions.
• More about modes
– Each page in virtual memory is tagged as to what mode the
processor must be in to read/write the page. Read only
pages, e.g., those that contain executable code, are not
writable from any mode.
– User applications switch from user mode to kernel mode
when they make system calls. These calls are validated
before execution.
Opening Visual
Studio – Now
lots of page
faults.
Windows Threads
• A scheduled entity in a process that executes
code. It has:
– Contents of a set of CPU registers
– Two stacks, one for kernel mode, one for user
mode.
– Private thread-local storage, used by Windows
subsystems and libraries
– Unique thread ID
– May have a security context (token) used for
impersonation.
Objects
• A kernel object is reference counted, and
consists of:
– A system defined data type
– Functions that operate on instances of that type
– A set of object attributes
• A process has an ID, base scheduling priority, and a
pointer to an access token.
• Many objects can be named and shared across
processes.
• Functions usually operate on object attributes.
• Example objects:
– Processes, threads, windows, files, events,
mutexes
Security
• Windows has:
– Discretionary protection for all shareable
system objects, e.g., files, directories,
processes, threads, registry keys, …
– Security auditing
– Password authentication at login
– Prevent one user from accessing
another’s deallocated memory.
Discretionary Access Control
• Methods by which owners of objects can
grant or deny access to others.
• When a user logs on, she is given a security
token (security context).
• When accessing a secured object, her
security token is compared with the access
control list of the object to determine if she
has permission for the requested operation.
Priviledged Access Control
• Priviledged access allows
administrators to take ownership of
existing kernel objects.
Registry
• The registry holds:
– Boot and system configuration info
– System-wide software settings
– Security database
– Per-user configuration settings
Registry Structure
• Hierarchal structure like a directory tree
– Each branch is called a key
– Each key can contain both keys and values
– A value contains stored information
– Value types can be: String, Binary, DWORD
Registry Structure
• HKEY_CLASSES_ROOT
– File associations and paths to COM servers
• HKEY_CURRENT_USER
– Part of HKEY_USERS for current user
• HKEY_LOCAL_MACHINE
– Hardware and software installed on your machine
• HKEY_USERS
– Preferences for each of the users of machine
• HKEY_CURRENT_CONFIG
– Part of HKEY_LOCAL_MACHINE for current configuration
End of Presentation
• Seminar Schedule