libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
OBJECT_ATTRIBUTES.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
20
21#include <introvirt/core/fwd.hh>
23#include <introvirt/util/json/json.hh>
26
27#include <cstdint>
28#include <string>
29#include <string_view>
30
31namespace introvirt {
32namespace windows {
33namespace nt {
34
39 public:
40 enum Attribute {
41 OBJ_INHERIT = 0x00000002,
42 OBJ_PERMANENT = 0x00000010,
43 OBJ_EXCLUSIVE = 0x00000020,
45 OBJ_OPENIF = 0x00000080,
46 OBJ_OPENLINK = 0x00000100,
47 OBJ_KERNEL_HANDLE = 0x00000200,
49 OBJ_VALID_ATTRIBUTES = 0x000007f2
50 };
51
52 public:
53 virtual uint32_t Length() const = 0;
54
58 virtual uint64_t RootDirectory() const = 0;
59
63 virtual std::string ObjectName() const = 0;
64
65 virtual HANDLE_ATTRIBUTES Attributes() const = 0;
66
70 virtual bool isInheritable() const = 0;
71
73
74 virtual const SECURITY_DESCRIPTOR* SecurityDescriptor() const = 0;
75
77
79
83 virtual const std::string& FullPath(const KPCR& kpcr) const = 0;
84
85 /*
86 * @param Length The value to in the Length field, or 0xFFFFFFFF to use the correct value
87 */
88 virtual void Length(uint32_t Length = 0xFFFFFFFF) = 0;
89
90 virtual void RootDirectory(uint64_t RootDirectory) = 0;
91
92 virtual void ObjectName(const std::string& ObjectName) = 0;
93
99 virtual void ObjectNamePtr(const guest_ptr<void>& pUnicodeString) = 0;
100
102
103 virtual void Inheritable(bool Inheritable) = 0;
104
105 virtual void SecurityQualityOfServicePtr(const guest_ptr<void>& pSecurityQualityOfService) = 0;
106
107 virtual guest_ptr<void> ptr() const = 0;
108
109 virtual void write(std::ostream& os, const std::string& linePrefix = "") const = 0;
110
111 virtual Json::Value json() const = 0;
112
113 static std::unique_ptr<OBJECT_ATTRIBUTES> make_unique(const NtKernel& kernel,
114 const guest_ptr<void>& ptr);
115
116 virtual ~OBJECT_ATTRIBUTES() = default;
117};
118
119} /* namespace nt */
120} /* namespace windows */
121
122namespace inject {
123
124template <>
125class GuestAllocation<windows::nt::OBJECT_ATTRIBUTES> final
126 : public GuestAllocationComplexBase<windows::nt::OBJECT_ATTRIBUTES> {
127 public:
129};
130
131} // namespace inject
132} // namespace introvirt
Definition guest_ptr.hh:88
Definition GuestAllocation.hh:179
Definition GuestAllocation.hh:31
Definition HANDLE_ATTRIBUTES.hh:39
The KPCR (Kernel Processor Control Region) is used by Windows to hold information about the current t...
Definition KPCR.hh:32
Abstraction for the Windows NT kernel.
Definition NtKernel.hh:37
Definition OBJECT_ATTRIBUTES.hh:38
virtual void ObjectNamePtr(const guest_ptr< void > &pUnicodeString)=0
virtual SECURITY_QUALITY_OF_SERVICE * SecurityQualityOfService()=0
virtual void Length(uint32_t Length=0xFFFFFFFF)=0
virtual std::string ObjectName() const =0
virtual Json::Value json() const =0
virtual void RootDirectory(uint64_t RootDirectory)=0
virtual uint32_t Length() const =0
virtual SECURITY_DESCRIPTOR * SecurityDescriptor()=0
virtual const SECURITY_DESCRIPTOR * SecurityDescriptor() const =0
Attribute
Definition OBJECT_ATTRIBUTES.hh:40
@ OBJ_PERMANENT
Definition OBJECT_ATTRIBUTES.hh:42
@ OBJ_EXCLUSIVE
Definition OBJECT_ATTRIBUTES.hh:43
@ OBJ_VALID_ATTRIBUTES
Definition OBJECT_ATTRIBUTES.hh:49
@ OBJ_KERNEL_HANDLE
Definition OBJECT_ATTRIBUTES.hh:47
@ OBJ_OPENIF
Definition OBJECT_ATTRIBUTES.hh:45
@ OBJ_OPENLINK
Definition OBJECT_ATTRIBUTES.hh:46
@ OBJ_INHERIT
Definition OBJECT_ATTRIBUTES.hh:41
@ OBJ_CASE_INSENSITIVE
Definition OBJECT_ATTRIBUTES.hh:44
@ OBJ_FORCE_ACCESS_CHECK
Definition OBJECT_ATTRIBUTES.hh:48
virtual void SecurityQualityOfServicePtr(const guest_ptr< void > &pSecurityQualityOfService)=0
virtual guest_ptr< void > ptr() const =0
virtual void ObjectName(const std::string &ObjectName)=0
virtual const std::string & FullPath(const KPCR &kpcr) const =0
virtual void Attributes(HANDLE_ATTRIBUTES Attributes)=0
virtual const SECURITY_QUALITY_OF_SERVICE * SecurityQualityOfService() const =0
virtual HANDLE_ATTRIBUTES Attributes() const =0
static std::unique_ptr< OBJECT_ATTRIBUTES > make_unique(const NtKernel &kernel, const guest_ptr< void > &ptr)
virtual uint64_t RootDirectory() const =0
virtual void Inheritable(bool Inheritable)=0
virtual void write(std::ostream &os, const std::string &linePrefix="") const =0
Definition SECURITY_DESCRIPTOR.hh:29
Definition SECURITY_QUALITY_OF_SERVICE.hh:32
Core IntroVirt classes.
Definition Cr0.hh:20