libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
PROCESS.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#pragma once
17
18#include "DISPATCHER_OBJECT.hh"
19#include "OBJECT_HEADER.hh"
20
23
24#include <memory>
25#include <string>
26#include <vector>
27
28namespace introvirt {
29namespace windows {
30namespace nt {
31
32class PROCESS : public DISPATCHER_OBJECT {
33 public:
40 virtual const PEB* Peb() const = 0;
41 virtual PEB* Peb() = 0;
42
48 virtual const PEB* WoW64Process() const = 0;
49 virtual PEB* WoW64Process() = 0;
50
56 virtual const std::string& ImageFileName() const = 0;
57 virtual void ImageFileName(const std::string& value) = 0;
58
66 virtual const std::string& full_path() const = 0;
67
75 virtual std::unique_ptr<HANDLE_TABLE> ObjectTable() = 0;
76
80 virtual std::unique_ptr<const HANDLE_TABLE> ObjectTable() const = 0;
81
85 virtual uint64_t UniqueProcessId() const = 0;
86
90 virtual uint64_t InheritedFromUniqueProcessId() const = 0;
91 virtual void InheritedFromUniqueProcessId(uint64_t pid) = 0;
92
93 virtual std::shared_ptr<const MMVAD> VadRoot() const = 0;
94
95 virtual TOKEN& Token() = 0;
96 virtual const TOKEN& Token() const = 0;
97
98 virtual uint64_t DirectoryTableBase() const = 0;
99
100 virtual uint64_t UserDirectoryTableBase() const = 0;
101
102 virtual uint32_t Cookie() const = 0;
103
104 virtual uint64_t SectionBaseAddress() const = 0;
105
109 virtual std::vector<std::shared_ptr<THREAD>> ThreadList() = 0;
110 virtual std::vector<std::shared_ptr<const THREAD>> ThreadList() const = 0;
111
115 virtual const MM_SESSION_SPACE* Session() const = 0;
116
120 virtual bool isWow64Process() const = 0;
121
122 virtual bool DisableDynamicCode() const = 0;
123
125
126 virtual bool DisableDynamicCodeAllowOptOut() const = 0;
128
129 virtual uint32_t ModifiedPageCount() const = 0;
130 virtual void ModifiedPageCount(uint32_t ModifiedPageCount) = 0;
131
132 virtual WindowsTime CreateTime() const = 0;
133 virtual void CreateTime(const WindowsTime& time) = 0;
134
135 virtual uint64_t MinimumWorkingSetSize() const = 0;
137
138 virtual uint64_t MaximumWorkingSetSize() const = 0;
140
141 virtual uint8_t ProtectionLevel() const = 0;
142 virtual void ProtectionLevel(uint8_t Level) = 0;
143
149 virtual guest_ptr<void> Win32Process() const = 0;
150
151 virtual ~PROCESS() = default;
152
153 static std::shared_ptr<PROCESS> make_shared(const NtKernel& kernel, const guest_ptr<void>& ptr);
154 static std::shared_ptr<PROCESS> make_shared(const NtKernel& kernel,
155 std::unique_ptr<OBJECT_HEADER>&& header);
156};
157
158} /* namespace nt */
159} /* namespace windows */
160} /* namespace introvirt */
Definition guest_ptr.hh:88
Helper class for the Windows time format.
Definition WindowsTime.hh:33
Definition DISPATCHER_OBJECT.hh:26
Definition MM_SESSION_SPACE.hh:29
Abstraction for the Windows NT kernel.
Definition NtKernel.hh:37
virtual const OBJECT_HEADER & header() const =0
Get the OBJECT_HEADER for this object.
virtual guest_ptr< void > ptr() const =0
Definition PEB.hh:31
Definition PROCESS.hh:32
virtual const TOKEN & Token() const =0
virtual uint64_t DirectoryTableBase() const =0
static std::shared_ptr< PROCESS > make_shared(const NtKernel &kernel, std::unique_ptr< OBJECT_HEADER > &&header)
virtual std::unique_ptr< HANDLE_TABLE > ObjectTable()=0
Get the handle table for this process, used for looking up objects by handle number.
virtual bool isWow64Process() const =0
virtual const std::string & ImageFileName() const =0
virtual uint64_t MinimumWorkingSetSize() const =0
virtual const std::string & full_path() const =0
Get the full path of the image.
virtual const PEB * Peb() const =0
virtual void ModifiedPageCount(uint32_t ModifiedPageCount)=0
virtual guest_ptr< void > Win32Process() const =0
Get the Win32Process pointer.
virtual void MaximumWorkingSetSize(uint64_t MaximumWorkingSetSize)=0
virtual WindowsTime CreateTime() const =0
virtual void DisableDynamicCodeAllowOptOut(bool DisableDynamicCodeAllowOptOut)=0
virtual void MinimumWorkingSetSize(uint64_t MinimumWorkingSetSize)=0
virtual uint64_t UserDirectoryTableBase() const =0
virtual const MM_SESSION_SPACE * Session() const =0
virtual void ImageFileName(const std::string &value)=0
virtual uint32_t ModifiedPageCount() const =0
virtual uint64_t UniqueProcessId() const =0
virtual void CreateTime(const WindowsTime &time)=0
virtual void ProtectionLevel(uint8_t Level)=0
virtual std::vector< std::shared_ptr< const THREAD > > ThreadList() const =0
virtual uint64_t InheritedFromUniqueProcessId() const =0
virtual uint64_t MaximumWorkingSetSize() const =0
virtual uint64_t SectionBaseAddress() const =0
virtual std::shared_ptr< const MMVAD > VadRoot() const =0
virtual const PEB * WoW64Process() const =0
virtual PEB * WoW64Process()=0
virtual void DisableDynamicCode(bool DisableDynamicCode)=0
virtual std::unique_ptr< const HANDLE_TABLE > ObjectTable() const =0
Get the handle table for this process, used for looking up objects by handle number.
virtual uint32_t Cookie() const =0
virtual std::vector< std::shared_ptr< THREAD > > ThreadList()=0
virtual void InheritedFromUniqueProcessId(uint64_t pid)=0
virtual uint8_t ProtectionLevel() const =0
virtual bool DisableDynamicCode() const =0
virtual bool DisableDynamicCodeAllowOptOut() const =0
static std::shared_ptr< PROCESS > make_shared(const NtKernel &kernel, const guest_ptr< void > &ptr)
Definition TOKEN.hh:69
Core IntroVirt classes.
Definition Cr0.hh:20