summaryrefslogtreecommitdiff
path: root/token.h
diff options
context:
space:
mode:
Diffstat (limited to 'token.h')
-rw-r--r--token.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/token.h b/token.h
new file mode 100644
index 0000000..732ff56
--- /dev/null
+++ b/token.h
@@ -0,0 +1,145 @@
1/*
2 * Copyright (c) 2004 Security Architects Corporation. All rights reserved.
3 *
4 * Module Name:
5 *
6 * token.h
7 *
8 * Abstract:
9 *
10 * This module defines various types used by token hooking routines.
11 *
12 * Author:
13 *
14 * Eugene Tsyrklevich 25-Mar-2004
15 *
16 * Revision History:
17 *
18 * None.
19 */
20
21
22#ifndef __TOKEN_H__
23#define __TOKEN_H__
24
25
26#include <NTDDK.h>
27#include "policy.h"
28#include "pathproc.h"
29#include "hookproc.h"
30#include "procname.h"
31#include "learn.h"
32#include "log.h"
33
34
35/*
36ZwAdjustGroupsToken
37ZwCreateToken
38ZwOpenProcessToken
39ZwOpenProcessTokenEx
40ZwOpenThreadToken
41ZwOpenThreadTokenEx
42*/
43
44
45typedef struct _TOKEN_PRIVILEGES {
46 DWORD PrivilegeCount;
47 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
48} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
49
50
51/*
52 * ZwAdjustPrivilegesToken adjusts the attributes of the privileges in a token. [NAR]
53 */
54
55typedef NTSTATUS (*fpZwAdjustPrivilegesToken) (
56 IN HANDLE TokenHandle,
57 IN BOOLEAN DisableAllPrivileges,
58 IN PTOKEN_PRIVILEGES NewState,
59 IN ULONG BufferLength,
60 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL,
61 OUT PULONG ReturnLength
62 );
63
64NTSTATUS
65NTAPI
66HookedNtAdjustPrivilegesToken(
67 IN HANDLE TokenHandle,
68 IN BOOLEAN DisableAllPrivileges,
69 IN PTOKEN_PRIVILEGES NewState,
70 IN ULONG BufferLength,
71 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL,
72 OUT PULONG ReturnLength
73 );
74
75
76/*
77 * ZwSetInformationToken sets information affecting a token object. [NAR]
78 */
79
80typedef NTSTATUS (*fpZwSetInformationToken) (
81 IN HANDLE TokenHandle,
82 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
83 IN PVOID TokenInformation,
84 IN ULONG TokenInformationLength
85 );
86
87NTSTATUS
88NTAPI
89HookedNtSetInformationToken(
90 IN HANDLE TokenHandle,
91 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
92 IN PVOID TokenInformation,
93 IN ULONG TokenInformationLength
94 );
95
96
97/*
98 * ZwOpenProcessToken opens the token of a process. [NAR]
99 */
100
101NTSYSAPI
102NTSTATUS
103NTAPI
104ZwOpenProcessToken(
105 IN HANDLE ProcessHandle,
106 IN ACCESS_MASK DesiredAccess,
107 OUT PHANDLE TokenHandle
108 );
109
110
111/*
112 * ZwOpenThreadToken opens the token of a thread. [NAR]
113 */
114
115NTSYSAPI
116NTSTATUS
117NTAPI
118ZwOpenThreadToken(
119 IN HANDLE ThreadHandle,
120 IN ACCESS_MASK DesiredAccess,
121 IN BOOLEAN OpenAsSelf,
122 OUT PHANDLE TokenHandle
123 );
124
125
126/*
127 * ZwQueryInformationToken retrieves information about a token object. [NAR]
128 */
129
130NTSYSAPI
131NTSTATUS
132NTAPI
133ZwQueryInformationToken(
134 IN HANDLE TokenHandle,
135 IN TOKEN_INFORMATION_CLASS TokenInformationClass,
136 OUT PVOID TokenInformation,
137 IN ULONG TokenInformationLength,
138 OUT PULONG ReturnLength
139 );
140
141
142BOOLEAN InitTokenHooks();
143
144
145#endif /* __TOKEN_H__ */