System Calls
System calls perform some operation on a specific type of kernel object exposed by the object manager
Example:
NtCreateMutant
system call createsMutant
object, which is a mutual exclusion primitive used for locking and thread synchronization
System call names follow a common pattern and start with either
Nt
orZw
The rest of the name relates to the kernel object type the system call operates on
Create
- creates a new object. Maps to New-Nt <Type> PowerShell commandsOpen
- opens an existing object. Maps to Get-Nt <Type> PowerShell commandsQueryInformation
- queries object information and propertiesSetInformation
- sets object information and properties
Object Attribute Flags and Descriptions
Inherit
Marks the handle as inheritable
Permanent
Marks the handle as permanent
Exclusive
Marks the handle as exclusive if creating a new object. Only the same process can open a handle to the object
CaseInsesitive
Looks up the object name in a case-insensitive manner
OpenIf
If using a Create call, opens a handle to an existing object if available
OpenLink
Opens the object if it's a link to another object; otherwise, follows the link. This is used only by the configuration manager
KernelHandle
Opens the handle as a kernel handle when used in kernel mode. This prevents user-mode applications from accessing the handle directly.
ForceAccessCheck
When used in kernel mode, ensures all access checks are performed, even if calling the Zw
version of the system call
IgnoreImpersonatedDeviceMap
Disables the device map when impersonating
DontReparse
Indicates not to follow any path that contains a symbolic link
Last updated