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
Pointer to a variable that receives the process handle.
Access rights. Common values:
PROCESS_ALL_ACCESS(0x1FFFFF)PROCESS_VM_READ(0x0010)PROCESS_VM_WRITE(0x0020)PROCESS_VM_OPERATION(0x0008)PROCESS_CREATE_THREAD(0x0002)
Pointer to
OBJECT_ATTRIBUTES structure. Use {sizeof(OBJECT_ATTRIBUTES)} for default.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 to process. Use
NULL or GetCurrentProcess() to terminate current process.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
Receives the thread handle.
Access rights (use
THREAD_ALL_ACCESS or 0x1FFFFF).Usually
NULL.Target process handle (use
GetCurrentProcess() for local thread).Thread entry point address.
Argument passed to thread function.
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 to wait on (thread, process, event, etc.).
If
TRUE, function returns when an APC is queued.Timeout in 100-nanosecond intervals. Use
NULL for infinite wait.Example
NtWaitForMultipleObjects
Waits for multiple objects.Parameters
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
