Overview
SysWhispers4 provides comprehensive process and thread management via direct syscalls, bypassing user-mode hooks on functions likeCreateRemoteThread, OpenProcess, etc.
Process Functions
NtOpenProcess
Opens a handle to an existing process.Parameters
PHANDLE
required
Pointer to a variable that receives the process handle.
ACCESS_MASK
required
Access rights. Common values:
PROCESS_ALL_ACCESS(0x1FFFFF)PROCESS_VM_READ(0x0010)PROCESS_VM_WRITE(0x0020)PROCESS_VM_OPERATION(0x0008)PROCESS_CREATE_THREAD(0x0002)
POBJECT_ATTRIBUTES
required
Pointer to
OBJECT_ATTRIBUTES structure. Use {sizeof(OBJECT_ATTRIBUTES)} for default.PCLIENT_ID
required
Pointer to
CLIENT_ID structure identifying the process:Example
NtCreateProcess
Creates a new process (legacy function, rarely used).NtCreateProcessEx
Extended process creation (preferred overNtCreateProcess).
NtCreateUserProcess
Comprehensive process creation (Windows Vista+).NtCreateUserProcess is complex and requires extensive setup. For most use cases, use CreateProcess from Win32 or perform process hollowing via NtCreateSection + NtMapViewOfSection.NtTerminateProcess
Terminates a process.Parameters
HANDLE
Handle to process. Use
NULL or GetCurrentProcess() to terminate current process.NTSTATUS
required
Exit code for the process.
Example
NtSuspendProcess
Suspends all threads in a process (Windows Vista+).Example
NtResumeProcess
Resumes all threads in a suspended process.NtQueryInformationProcess
Retrieves information about a process.Common Information Classes
Example: Get PEB Address
NtSetInformationProcess
Sets process information.Example: Set Critical Process
Thread Functions
NtCreateThreadEx
Creates a thread in a process.Parameters
PHANDLE
required
Receives the thread handle.
ACCESS_MASK
required
Access rights (use
THREAD_ALL_ACCESS or 0x1FFFFF).POBJECT_ATTRIBUTES
Usually
NULL.HANDLE
required
Target process handle (use
GetCurrentProcess() for local thread).PVOID
required
Thread entry point address.
PVOID
Argument passed to thread function.
ULONG
required
Creation flags:
0— Start immediately0x00000001— Create suspended0x00000004— Hide from debugger
Example: Remote Thread Injection
NtOpenThread
Opens a handle to an existing thread.Example
NtSuspendThread
Suspends a thread.Example
NtResumeThread
Resumes a suspended thread.NtTerminateThread
Terminates a thread.NtGetContextThread
Retrieves a thread’s CPU context (registers).Example
NtSetContextThread
Sets a thread’s CPU context.Example: Thread Hijacking
NtQueueApcThread
Queues an APC (Asynchronous Procedure Call) to a thread.Example: APC Injection
NtQueueApcThreadEx
Extended APC queuing (Windows 7+).NtTestAlert
Tests if APCs are pending for the current thread and executes them.NtAlertThread
Alerts a thread (forces APC delivery).NtAlertResumeThread
Alerts and resumes a thread in one operation.NtQueryInformationThread
Retrieves thread information.Example: Check if Thread is in Alertable State
NtSetInformationThread
Sets thread information.Example: Hide Thread from Debugger
Synchronization Functions
NtWaitForSingleObject
Waits for an object to be signaled.Parameters
HANDLE
required
Handle to wait on (thread, process, event, etc.).
BOOLEAN
required
If
TRUE, function returns when an APC is queued.PLARGE_INTEGER
Timeout in 100-nanosecond intervals. Use
NULL for infinite wait.Example
NtWaitForMultipleObjects
Waits for multiple objects.Parameters
WAIT_TYPE
required
WaitAll(0) — Wait for all objectsWaitAny(1) — Wait for any object
NtSignalAndWaitForSingleObject
Signals one object and waits for another in one atomic operation.NtClose
Closes a handle.Example
NtDuplicateObject
Duplicates a handle.Complete Example: Process Injection
Combining process and thread functions:Next Steps
File Functions
NT file I/O operations
Token Functions
Token manipulation and privilege escalation
