libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
NtCreateUserProcess.hh
Go to the documentation of this file.
1/*
2 * Copyright 2021 Assured Information Security, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/* This file is automatically generated. Do not edit. */
18#pragma once
19
20#include "NtSystemCall.hh"
23
32
33#include <memory>
34
35namespace introvirt {
36namespace windows {
37namespace nt {
38
43 public:
44 /* Direct parameter getters */
45
51 virtual guest_ptr<void> ProcessHandlePtr() const = 0;
57 virtual guest_ptr<void> ThreadHandlePtr() const = 0;
87 virtual ProcessCreateFlags ProcessFlags() const = 0;
93 virtual ThreadCreateFlags ThreadFlags() const = 0;
105 virtual guest_ptr<void> CreateInfoPtr() const = 0;
112
113 /* Direct parameter setters */
114
120 virtual void ProcessHandlePtr(const guest_ptr<void>& pProcessHandle) = 0;
126 virtual void ThreadHandlePtr(const guest_ptr<void>& pThreadHandle) = 0;
145 virtual void ProcessObjectAttributesPtr(const guest_ptr<void>& pProcessObjectAttributes) = 0;
151 virtual void ThreadObjectAttributesPtr(const guest_ptr<void>& pThreadObjectAttributes) = 0;
169 virtual void ProcessParametersPtr(const guest_ptr<void>& pProcessParameters) = 0;
175 virtual void CreateInfoPtr(const guest_ptr<void>& pCreateInfo) = 0;
181 virtual void AttributeListPtr(const guest_ptr<void>& pAttributeList) = 0;
182
183 /* Helper methods */
184 virtual uint64_t ProcessHandle() const = 0;
185 virtual void ProcessHandle(uint64_t ProcessHandle) = 0;
186 virtual uint64_t ThreadHandle() const = 0;
187 virtual void ThreadHandle(uint64_t ThreadHandle) = 0;
188 virtual const OBJECT_ATTRIBUTES* ProcessObjectAttributes() const = 0;
190 virtual const OBJECT_ATTRIBUTES* ThreadObjectAttributes() const = 0;
194 virtual const PS_CREATE_INFO* CreateInfo() const = 0;
196 virtual const PS_ATTRIBUTE_LIST* AttributeList() const = 0;
204 virtual std::shared_ptr<PROCESS> get_new_process() = 0;
205
209 virtual const std::shared_ptr<PROCESS> get_new_process() const = 0;
210
217 virtual std::shared_ptr<THREAD> get_new_thread() = 0;
218
222 virtual const std::shared_ptr<THREAD> get_new_thread() const = 0;
223
224 /*
225 * System call injection support. You probably want to use
226 * inject::system_call<NtCreateUserProcess>.
227 */
228 static NTSTATUS inject(uint64_t& ProcessHandle, uint64_t& ThreadHandle,
231 const guest_ptr<void>& pProcessObjectAttributes,
232 const guest_ptr<void>& pThreadObjectAttributes,
235 PS_CREATE_INFO& CreateInfo, const guest_ptr<void>& pAttributeList);
236};
237
238} /* namespace nt */
239} /* namespace windows */
240} /* namespace introvirt */
Definition guest_ptr.hh:88
Status codes returned by Windows NT system calls.
Definition NTSTATUS.hh:34
Handler class for the NtCreateUserProcess system call.
Definition NtCreateUserProcess.hh:42
virtual const std::shared_ptr< THREAD > get_new_thread() const =0
Get the newly created THREAD object.
virtual void ThreadHandlePtr(const guest_ptr< void > &pThreadHandle)=0
Setter for ThreadHandlePtr.
static NTSTATUS inject(uint64_t &ProcessHandle, uint64_t &ThreadHandle, PROCESS_ACCESS_MASK ProcessDesiredAccess, THREAD_ACCESS_MASK ThreadDesiredAccess, const guest_ptr< void > &pProcessObjectAttributes, const guest_ptr< void > &pThreadObjectAttributes, ProcessCreateFlags ProcessFlags, ThreadCreateFlags ThreadFlags, const RTL_USER_PROCESS_PARAMETERS *ProcessParameters, PS_CREATE_INFO &CreateInfo, const guest_ptr< void > &pAttributeList)
virtual PROCESS_ACCESS_MASK ProcessDesiredAccess() const =0
Getter for ProcessDesiredAccess.
virtual guest_ptr< void > ProcessHandlePtr() const =0
Getter for ProcessHandlePtr.
virtual void ProcessHandle(uint64_t ProcessHandle)=0
virtual std::shared_ptr< THREAD > get_new_thread()=0
Get the newly created THREAD object.
virtual THREAD_ACCESS_MASK ThreadDesiredAccess() const =0
Getter for ThreadDesiredAccess.
virtual const std::shared_ptr< PROCESS > get_new_process() const =0
Get the newly created PROCESS object.
virtual void CreateInfoPtr(const guest_ptr< void > &pCreateInfo)=0
Setter for CreateInfoPtr.
virtual void ProcessParametersPtr(const guest_ptr< void > &pProcessParameters)=0
Setter for ProcessParametersPtr.
virtual void ThreadHandle(uint64_t ThreadHandle)=0
virtual void ProcessHandlePtr(const guest_ptr< void > &pProcessHandle)=0
Setter for ProcessHandlePtr.
virtual void AttributeListPtr(const guest_ptr< void > &pAttributeList)=0
Setter for AttributeListPtr.
virtual ProcessCreateFlags ProcessFlags() const =0
Getter for ProcessFlags.
virtual const RTL_USER_PROCESS_PARAMETERS * ProcessParameters() const =0
virtual OBJECT_ATTRIBUTES * ProcessObjectAttributes()=0
virtual guest_ptr< void > ThreadObjectAttributesPtr() const =0
Getter for ThreadObjectAttributesPtr.
virtual ThreadCreateFlags ThreadFlags() const =0
Getter for ThreadFlags.
virtual void ProcessDesiredAccess(PROCESS_ACCESS_MASK ProcessDesiredAccess)=0
Setter for ProcessDesiredAccess.
virtual void ProcessObjectAttributesPtr(const guest_ptr< void > &pProcessObjectAttributes)=0
Setter for ProcessObjectAttributesPtr.
virtual const OBJECT_ATTRIBUTES * ProcessObjectAttributes() const =0
virtual guest_ptr< void > CreateInfoPtr() const =0
Getter for CreateInfoPtr.
virtual guest_ptr< void > ProcessParametersPtr() const =0
Getter for ProcessParametersPtr.
virtual const OBJECT_ATTRIBUTES * ThreadObjectAttributes() const =0
virtual const PS_CREATE_INFO * CreateInfo() const =0
virtual uint64_t ThreadHandle() const =0
virtual PS_CREATE_INFO * CreateInfo()=0
virtual PS_ATTRIBUTE_LIST * AttributeList()=0
virtual void ProcessFlags(ProcessCreateFlags ProcessFlags)=0
Setter for ProcessFlags.
virtual void ThreadDesiredAccess(THREAD_ACCESS_MASK ThreadDesiredAccess)=0
Setter for ThreadDesiredAccess.
virtual const PS_ATTRIBUTE_LIST * AttributeList() const =0
virtual OBJECT_ATTRIBUTES * ThreadObjectAttributes()=0
virtual guest_ptr< void > ProcessObjectAttributesPtr() const =0
Getter for ProcessObjectAttributesPtr.
virtual void ThreadFlags(ThreadCreateFlags ThreadFlags)=0
Setter for ThreadFlags.
virtual std::shared_ptr< PROCESS > get_new_process()=0
Get the newly created PROCESS object.
virtual void ThreadObjectAttributesPtr(const guest_ptr< void > &pThreadObjectAttributes)=0
Setter for ThreadObjectAttributesPtr.
virtual guest_ptr< void > AttributeListPtr() const =0
Getter for AttributeListPtr.
virtual RTL_USER_PROCESS_PARAMETERS * ProcessParameters()=0
virtual uint64_t ProcessHandle() const =0
virtual guest_ptr< void > ThreadHandlePtr() const =0
Getter for ThreadHandlePtr.
Base type for NT system calls.
Definition NtSystemCall.hh:29
Definition OBJECT_ATTRIBUTES.hh:38
ACCESS_MASK class for process permissions.
Definition PROCESS_ACCESS_MASK.hh:72
Definition PS_ATTRIBUTE_LIST.hh:116
Definition PS_CREATE_INFO.hh:43
Definition ProcessCreateFlags.hh:33
Definition RTL_USER_PROCESS_PARAMETERS.hh:33
ACCESS_MASK class for thread permissions.
Definition THREAD_ACCESS_MASK.hh:67
Definition ThreadCreateFlags.hh:34
Core IntroVirt classes.
Definition Cr0.hh:20