turborex 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +674 -0
- data/README.md +38 -0
- data/README.rdoc +19 -0
- data/examples/alpc_client.rb +15 -0
- data/examples/alpc_server.rb +14 -0
- data/examples/com_client.rb +19 -0
- data/examples/com_finder.rb +39 -0
- data/examples/create_instance.rb +15 -0
- data/examples/cstruct.rb +19 -0
- data/examples/find_com_client_calls.rb +16 -0
- data/examples/find_rpc_security_callback.rb +12 -0
- data/examples/rpc_finder.rb +117 -0
- data/examples/scan_exports.rb +5 -0
- data/examples/scan_imports.rb +5 -0
- data/examples/tinysdk.rb +17 -0
- data/lib/turborex.rb +21 -0
- data/lib/turborex/cstruct.rb +565 -0
- data/lib/turborex/cstruct/struct_helper.rb +7 -0
- data/lib/turborex/exception.rb +65 -0
- data/lib/turborex/fuzzer.rb +204 -0
- data/lib/turborex/fuzzer/containers.rb +115 -0
- data/lib/turborex/fuzzer/coverage.rb +67 -0
- data/lib/turborex/fuzzer/mutators.rb +25 -0
- data/lib/turborex/fuzzer/seed.rb +30 -0
- data/lib/turborex/monkey.rb +11 -0
- data/lib/turborex/msrpc.rb +14 -0
- data/lib/turborex/msrpc/decompiler.rb +244 -0
- data/lib/turborex/msrpc/midl.rb +747 -0
- data/lib/turborex/msrpc/ndrtype.rb +167 -0
- data/lib/turborex/msrpc/rpcbase.rb +777 -0
- data/lib/turborex/msrpc/rpcfinder.rb +1426 -0
- data/lib/turborex/msrpc/utils.rb +70 -0
- data/lib/turborex/pefile.rb +8 -0
- data/lib/turborex/pefile/pe.rb +61 -0
- data/lib/turborex/pefile/scanner.rb +82 -0
- data/lib/turborex/utils.rb +321 -0
- data/lib/turborex/windows.rb +402 -0
- data/lib/turborex/windows/alpc.rb +844 -0
- data/lib/turborex/windows/com.rb +266 -0
- data/lib/turborex/windows/com/client.rb +84 -0
- data/lib/turborex/windows/com/com_finder.rb +330 -0
- data/lib/turborex/windows/com/com_registry.rb +100 -0
- data/lib/turborex/windows/com/interface.rb +522 -0
- data/lib/turborex/windows/com/utils.rb +210 -0
- data/lib/turborex/windows/constants.rb +82 -0
- data/lib/turborex/windows/process.rb +56 -0
- data/lib/turborex/windows/security.rb +12 -0
- data/lib/turborex/windows/security/ace.rb +76 -0
- data/lib/turborex/windows/security/acl.rb +25 -0
- data/lib/turborex/windows/security/security_descriptor.rb +118 -0
- data/lib/turborex/windows/tinysdk.rb +89 -0
- data/lib/turborex/windows/utils.rb +138 -0
- data/resources/headers/alpc/ntdef.h +72 -0
- data/resources/headers/alpc/ntlpcapi.h +1014 -0
- data/resources/headers/rpc/common.h +162 -0
- data/resources/headers/rpc/guiddef.h +191 -0
- data/resources/headers/rpc/internal_ndrtypes.h +262 -0
- data/resources/headers/rpc/rpc.h +10 -0
- data/resources/headers/rpc/rpcdce.h +266 -0
- data/resources/headers/rpc/rpcdcep.h +187 -0
- data/resources/headers/rpc/rpcndr.h +39 -0
- data/resources/headers/rpc/v4_x64/rpcinternals.h +154 -0
- data/resources/headers/rpc/wintype.h +517 -0
- data/resources/headers/tinysdk/tinysdk.h +5 -0
- data/resources/headers/tinysdk/tinysdk/comdef.h +645 -0
- data/resources/headers/tinysdk/tinysdk/dbghelp.h +118 -0
- data/resources/headers/tinysdk/tinysdk/guiddef.h +194 -0
- data/resources/headers/tinysdk/tinysdk/memoryapi.h +12 -0
- data/resources/headers/tinysdk/tinysdk/poppack.h +12 -0
- data/resources/headers/tinysdk/tinysdk/pshpack4.h +13 -0
- data/resources/headers/tinysdk/tinysdk/winnt.h +1059 -0
- data/resources/headers/tinysdk/tinysdk/wintype.h +326 -0
- metadata +290 -0
@@ -0,0 +1,266 @@
|
|
1
|
+
#ifndef __RPCDCE_H__
|
2
|
+
#define __RPCDCE_H__
|
3
|
+
|
4
|
+
#if _MSC_VER > 1000
|
5
|
+
#pragma once
|
6
|
+
#endif
|
7
|
+
|
8
|
+
#ifdef __cplusplus
|
9
|
+
extern "C" {
|
10
|
+
#endif
|
11
|
+
|
12
|
+
|
13
|
+
#pragma region Application Family or OneCore Family
|
14
|
+
|
15
|
+
#define RPC_C_PARM_MAX_PACKET_LENGTH 1
|
16
|
+
#define RPC_C_PARM_BUFFER_LENGTH 2
|
17
|
+
|
18
|
+
#define RPC_IF_AUTOLISTEN 0x0001
|
19
|
+
#define RPC_IF_OLE 0x0002
|
20
|
+
#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x0004
|
21
|
+
#define RPC_IF_ALLOW_SECURE_ONLY 0x0008
|
22
|
+
#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x0010
|
23
|
+
#define RPC_IF_ALLOW_LOCAL_ONLY 0x0020
|
24
|
+
#define RPC_IF_SEC_NO_CACHE 0x0040
|
25
|
+
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
26
|
+
#define RPC_IF_SEC_CACHE_PER_PROC 0x0080
|
27
|
+
#define RPC_IF_ASYNC_CALLBACK 0x0100
|
28
|
+
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
|
29
|
+
|
30
|
+
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
31
|
+
#define RPC_FW_IF_FLAG_DCOM 0x0001
|
32
|
+
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
|
33
|
+
|
34
|
+
#ifndef IN
|
35
|
+
#define IN
|
36
|
+
#endif
|
37
|
+
|
38
|
+
#ifndef OUT
|
39
|
+
#define OUT
|
40
|
+
#endif
|
41
|
+
|
42
|
+
#ifndef OPTIONAL
|
43
|
+
#define OPTIONAL
|
44
|
+
#endif
|
45
|
+
|
46
|
+
#ifndef DECLSPEC_NORETURN
|
47
|
+
#if (_MSC_VER >= 1200) && !defined(MIDL_PASS)
|
48
|
+
#define DECLSPEC_NORETURN __declspec(noreturn)
|
49
|
+
#else
|
50
|
+
#define DECLSPEC_NORETURN
|
51
|
+
#endif
|
52
|
+
#endif
|
53
|
+
|
54
|
+
|
55
|
+
typedef unsigned char __RPC_FAR * RPC_CSTR;
|
56
|
+
|
57
|
+
#if defined(RPC_USE_NATIVE_WCHAR) && defined(_NATIVE_WCHAR_T_DEFINED)
|
58
|
+
typedef wchar_t __RPC_FAR * RPC_WSTR;
|
59
|
+
typedef const wchar_t * RPC_CWSTR;
|
60
|
+
#else
|
61
|
+
typedef unsigned short __RPC_FAR * RPC_WSTR;
|
62
|
+
typedef const unsigned short * RPC_CWSTR;
|
63
|
+
#endif
|
64
|
+
|
65
|
+
typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
|
66
|
+
typedef RPC_BINDING_HANDLE handle_t;
|
67
|
+
#define rpc_binding_handle_t RPC_BINDING_HANDLE
|
68
|
+
|
69
|
+
#ifndef GUID_DEFINED
|
70
|
+
#include <guiddef.h>
|
71
|
+
#endif /* GUID_DEFINED */
|
72
|
+
|
73
|
+
#ifndef UUID_DEFINED
|
74
|
+
#define UUID_DEFINED
|
75
|
+
typedef GUID UUID;
|
76
|
+
#ifndef uuid_t
|
77
|
+
#define uuid_t UUID
|
78
|
+
#endif
|
79
|
+
#endif
|
80
|
+
|
81
|
+
|
82
|
+
#pragma endregion
|
83
|
+
|
84
|
+
#pragma region Desktop Family or OneCore Family
|
85
|
+
|
86
|
+
|
87
|
+
#ifndef rpc_binding_vector_t
|
88
|
+
#define rpc_binding_vector_t RPC_BINDING_VECTOR
|
89
|
+
#endif
|
90
|
+
|
91
|
+
#ifndef uuid_vector_t
|
92
|
+
#define uuid_vector_t UUID_VECTOR
|
93
|
+
#endif
|
94
|
+
|
95
|
+
|
96
|
+
#pragma endregion
|
97
|
+
|
98
|
+
#pragma region Application Family or OneCore Family
|
99
|
+
|
100
|
+
typedef void __RPC_FAR * RPC_IF_HANDLE;
|
101
|
+
|
102
|
+
#ifndef IFID_DEFINED
|
103
|
+
#define IFID_DEFINED
|
104
|
+
typedef struct _RPC_IF_ID
|
105
|
+
{
|
106
|
+
UUID Uuid;
|
107
|
+
unsigned short VersMajor;
|
108
|
+
unsigned short VersMinor;
|
109
|
+
} RPC_IF_ID;
|
110
|
+
#endif
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
#pragma endregion
|
115
|
+
|
116
|
+
#pragma region Desktop Family or OneCore Family
|
117
|
+
|
118
|
+
|
119
|
+
#define RPC_C_BINDING_INFINITE_TIMEOUT 10
|
120
|
+
#define RPC_C_BINDING_MIN_TIMEOUT 0
|
121
|
+
#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
|
122
|
+
#define RPC_C_BINDING_MAX_TIMEOUT 9
|
123
|
+
|
124
|
+
#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
|
125
|
+
|
126
|
+
#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
|
127
|
+
#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
|
128
|
+
|
129
|
+
#define RPC_C_BIND_TO_ALL_NICS 1
|
130
|
+
#define RPC_C_USE_INTERNET_PORT 0x1
|
131
|
+
#define RPC_C_USE_INTRANET_PORT 0x2
|
132
|
+
#define RPC_C_DONT_FAIL 0x4
|
133
|
+
#define RPC_C_RPCHTTP_USE_LOAD_BALANCE 0x8
|
134
|
+
|
135
|
+
#if (NTDDI_VERSION < NTDDI_VISTA)
|
136
|
+
#define RPC_C_MQ_TEMPORARY 0x0000
|
137
|
+
#define RPC_C_MQ_PERMANENT 0x0001
|
138
|
+
#define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
|
139
|
+
#define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
|
140
|
+
#define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
|
141
|
+
#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
|
142
|
+
#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
|
143
|
+
|
144
|
+
#define RPC_C_MQ_EXPRESS 0
|
145
|
+
#define RPC_C_MQ_RECOVERABLE 1
|
146
|
+
|
147
|
+
#define RPC_C_MQ_JOURNAL_NONE 0
|
148
|
+
#define RPC_C_MQ_JOURNAL_DEADLETTER 1
|
149
|
+
#define RPC_C_MQ_JOURNAL_ALWAYS 2
|
150
|
+
|
151
|
+
|
152
|
+
#define RPC_C_OPT_MQ_DELIVERY 1
|
153
|
+
#define RPC_C_OPT_MQ_PRIORITY 2
|
154
|
+
#define RPC_C_OPT_MQ_JOURNAL 3
|
155
|
+
#define RPC_C_OPT_MQ_ACKNOWLEDGE 4
|
156
|
+
#define RPC_C_OPT_MQ_AUTHN_SERVICE 5
|
157
|
+
#define RPC_C_OPT_MQ_AUTHN_LEVEL 6
|
158
|
+
#define RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE 7
|
159
|
+
#define RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED 8
|
160
|
+
#endif
|
161
|
+
|
162
|
+
#define RPC_C_OPT_BINDING_NONCAUSAL 9
|
163
|
+
#define RPC_C_OPT_SECURITY_CALLBACK 10
|
164
|
+
#define RPC_C_OPT_UNIQUE_BINDING 11
|
165
|
+
|
166
|
+
#if (NTDDI_VERSION <= NTDDI_WIN2K)
|
167
|
+
#define RPC_C_OPT_MAX_OPTIONS 12
|
168
|
+
|
169
|
+
#elif (NTDDI_VERSION <= NTDDI_WS03)
|
170
|
+
#define RPC_C_OPT_CALL_TIMEOUT 12
|
171
|
+
#define RPC_C_OPT_DONT_LINGER 13
|
172
|
+
#define RPC_C_OPT_MAX_OPTIONS 14
|
173
|
+
|
174
|
+
#else
|
175
|
+
#define RPC_C_OPT_TRANS_SEND_BUFFER_SIZE 5
|
176
|
+
#define RPC_C_OPT_CALL_TIMEOUT 12
|
177
|
+
#define RPC_C_OPT_DONT_LINGER 13
|
178
|
+
#define RPC_C_OPT_TRUST_PEER 14
|
179
|
+
#define RPC_C_OPT_ASYNC_BLOCK 15
|
180
|
+
#define RPC_C_OPT_OPTIMIZE_TIME 16
|
181
|
+
#define RPC_C_OPT_MAX_OPTIONS 17
|
182
|
+
|
183
|
+
#endif
|
184
|
+
|
185
|
+
#define RPC_C_FULL_CERT_CHAIN 0x0001
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
#ifdef RPC_UNICODE_SUPPORTED
|
190
|
+
typedef struct _RPC_PROTSEQ_VECTORA
|
191
|
+
{
|
192
|
+
unsigned int Count;
|
193
|
+
unsigned char __RPC_FAR * Protseq[1];
|
194
|
+
} RPC_PROTSEQ_VECTORA;
|
195
|
+
|
196
|
+
typedef struct _RPC_PROTSEQ_VECTORW
|
197
|
+
{
|
198
|
+
unsigned int Count;
|
199
|
+
unsigned short __RPC_FAR * Protseq[1];
|
200
|
+
} RPC_PROTSEQ_VECTORW;
|
201
|
+
|
202
|
+
#ifdef UNICODE
|
203
|
+
#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
|
204
|
+
#else /* UNICODE */
|
205
|
+
#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
|
206
|
+
#endif /* UNICODE */
|
207
|
+
|
208
|
+
#else
|
209
|
+
|
210
|
+
typedef struct _RPC_PROTSEQ_VECTOR
|
211
|
+
{
|
212
|
+
unsigned int Count;
|
213
|
+
unsigned char __RPC_FAR * Protseq[1];
|
214
|
+
} RPC_PROTSEQ_VECTOR;
|
215
|
+
|
216
|
+
#endif
|
217
|
+
typedef struct _RPC_POLICY {
|
218
|
+
unsigned int Length ;
|
219
|
+
unsigned long EndpointFlags ;
|
220
|
+
unsigned long NICFlags ;
|
221
|
+
} RPC_POLICY, __RPC_FAR *PRPC_POLICY ;
|
222
|
+
|
223
|
+
#pragma endregion
|
224
|
+
|
225
|
+
#pragma region Application Family or OneCore Family
|
226
|
+
|
227
|
+
|
228
|
+
#define RPC_MGR_EPV void
|
229
|
+
|
230
|
+
typedef struct
|
231
|
+
{
|
232
|
+
unsigned int Count;
|
233
|
+
unsigned long Stats[1];
|
234
|
+
} RPC_STATS_VECTOR;
|
235
|
+
|
236
|
+
#define RPC_C_STATS_CALLS_IN 0
|
237
|
+
#define RPC_C_STATS_CALLS_OUT 1
|
238
|
+
#define RPC_C_STATS_PKTS_IN 2
|
239
|
+
#define RPC_C_STATS_PKTS_OUT 3
|
240
|
+
|
241
|
+
typedef struct
|
242
|
+
{
|
243
|
+
unsigned long Count;
|
244
|
+
RPC_IF_ID __RPC_FAR * IfId[1];
|
245
|
+
} RPC_IF_ID_VECTOR;
|
246
|
+
|
247
|
+
#define _In_
|
248
|
+
|
249
|
+
typedef RPC_STATUS RPC_ENTRY
|
250
|
+
RPC_IF_CALLBACK_FN (
|
251
|
+
_In_ RPC_IF_HANDLE InterfaceUuid,
|
252
|
+
_In_ void *Context
|
253
|
+
) ;
|
254
|
+
|
255
|
+
typedef struct _UUID_VECTOR
|
256
|
+
{
|
257
|
+
unsigned long Count;
|
258
|
+
UUID *Uuid[1];
|
259
|
+
} UUID_VECTOR;
|
260
|
+
#include <rpcdcep.h>
|
261
|
+
|
262
|
+
#ifdef __cplusplus
|
263
|
+
}
|
264
|
+
#endif
|
265
|
+
|
266
|
+
#endif
|
@@ -0,0 +1,187 @@
|
|
1
|
+
#include <wintype.h>
|
2
|
+
#include <guiddef.h>
|
3
|
+
|
4
|
+
|
5
|
+
#ifndef __RPCDCEP_H__
|
6
|
+
#define __RPCDCEP_H__
|
7
|
+
|
8
|
+
#if _MSC_VER > 1000
|
9
|
+
#pragma once
|
10
|
+
#endif
|
11
|
+
|
12
|
+
#ifdef __cplusplus
|
13
|
+
extern "C" {
|
14
|
+
#endif
|
15
|
+
|
16
|
+
|
17
|
+
#pragma region Application Family or OneCore Family
|
18
|
+
|
19
|
+
|
20
|
+
typedef struct _RPC_VERSION {
|
21
|
+
unsigned short MajorVersion;
|
22
|
+
unsigned short MinorVersion;
|
23
|
+
} RPC_VERSION;
|
24
|
+
|
25
|
+
typedef struct _RPC_SYNTAX_IDENTIFIER {
|
26
|
+
GUID SyntaxGUID;
|
27
|
+
RPC_VERSION SyntaxVersion;
|
28
|
+
} RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
|
29
|
+
|
30
|
+
typedef struct _RPC_MESSAGE
|
31
|
+
{
|
32
|
+
RPC_BINDING_HANDLE Handle;
|
33
|
+
unsigned long DataRepresentation;
|
34
|
+
void __RPC_FAR * Buffer;
|
35
|
+
unsigned int BufferLength;
|
36
|
+
unsigned int ProcNum;
|
37
|
+
PRPC_SYNTAX_IDENTIFIER TransferSyntax;
|
38
|
+
void __RPC_FAR * RpcInterfaceInformation;
|
39
|
+
void __RPC_FAR * ReservedForRuntime;
|
40
|
+
RPC_MGR_EPV __RPC_FAR * ManagerEpv;
|
41
|
+
void __RPC_FAR * ImportContext;
|
42
|
+
unsigned long RpcFlags;
|
43
|
+
} RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
|
44
|
+
|
45
|
+
|
46
|
+
#pragma endregion
|
47
|
+
|
48
|
+
#pragma region Desktop Family or OneCore Family
|
49
|
+
|
50
|
+
|
51
|
+
typedef RPC_STATUS
|
52
|
+
RPC_ENTRY RPC_FORWARD_FUNCTION(
|
53
|
+
IN UUID __RPC_FAR * InterfaceId,
|
54
|
+
IN RPC_VERSION __RPC_FAR * InterfaceVersion,
|
55
|
+
IN UUID __RPC_FAR * ObjectId,
|
56
|
+
IN unsigned char __RPC_FAR * Rpcpro,
|
57
|
+
IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
|
58
|
+
|
59
|
+
enum RPC_ADDRESS_CHANGE_TYPE
|
60
|
+
{
|
61
|
+
PROTOCOL_NOT_LOADED = 1,
|
62
|
+
PROTOCOL_LOADED,
|
63
|
+
PROTOCOL_ADDRESS_CHANGE
|
64
|
+
};
|
65
|
+
|
66
|
+
typedef void
|
67
|
+
RPC_ENTRY RPC_ADDRESS_CHANGE_FN(
|
68
|
+
IN void * arg
|
69
|
+
);
|
70
|
+
|
71
|
+
|
72
|
+
#pragma endregion
|
73
|
+
|
74
|
+
#pragma region Application Family or OneCore Family
|
75
|
+
|
76
|
+
|
77
|
+
#define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *)(ULONG_PTR)0xFFFFF00D)
|
78
|
+
|
79
|
+
#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS 0x00000000UL
|
80
|
+
#define RPC_CONTEXT_HANDLE_FLAGS 0x30000000UL
|
81
|
+
#define RPC_CONTEXT_HANDLE_SERIALIZE 0x10000000UL
|
82
|
+
#define RPC_CONTEXT_HANDLE_DONT_SERIALIZE 0x20000000UL
|
83
|
+
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
84
|
+
#define RPC_TYPE_STRICT_CONTEXT_HANDLE 0x40000000UL
|
85
|
+
#endif
|
86
|
+
|
87
|
+
|
88
|
+
#define RPC_NCA_FLAGS_DEFAULT 0x00000000 /* 0b000...000 */
|
89
|
+
#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 /* 0b000...001 */
|
90
|
+
#define RPC_NCA_FLAGS_BROADCAST 0x00000002 /* 0b000...010 */
|
91
|
+
#define RPC_NCA_FLAGS_MAYBE 0x00000004 /* 0b000...100 */
|
92
|
+
|
93
|
+
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
94
|
+
#define RPCFLG_HAS_GUARANTEE 0x00000010UL
|
95
|
+
#endif
|
96
|
+
|
97
|
+
#define RPCFLG_WINRT_REMOTE_ASYNC 0x00000020UL
|
98
|
+
|
99
|
+
|
100
|
+
#define RPC_BUFFER_COMPLETE 0x00001000 /* used by pipes */
|
101
|
+
#define RPC_BUFFER_PARTIAL 0x00002000 /* used by pipes */
|
102
|
+
#define RPC_BUFFER_EXTRA 0x00004000 /* used by pipes */
|
103
|
+
#define RPC_BUFFER_ASYNC 0x00008000 /* used by async rpc */
|
104
|
+
#define RPC_BUFFER_NONOTIFY 0x00010000 /* used by async pipes */
|
105
|
+
|
106
|
+
#define RPCFLG_MESSAGE 0x01000000UL
|
107
|
+
#define RPCFLG_AUTO_COMPLETE 0x08000000UL
|
108
|
+
#define RPCFLG_LOCAL_CALL 0x10000000UL
|
109
|
+
#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
|
110
|
+
#define RPCFLG_ASYNCHRONOUS 0x40000000UL
|
111
|
+
#define RPCFLG_NON_NDR 0x80000000UL
|
112
|
+
|
113
|
+
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
114
|
+
#define RPCFLG_HAS_MULTI_SYNTAXES 0x02000000UL
|
115
|
+
#define RPCFLG_HAS_CALLBACK 0x04000000UL
|
116
|
+
#endif
|
117
|
+
|
118
|
+
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
119
|
+
#define RPCFLG_ACCESSIBILITY_BIT1 0x00100000UL
|
120
|
+
#define RPCFLG_ACCESSIBILITY_BIT2 0x00200000UL
|
121
|
+
#define RPCFLG_ACCESS_LOCAL 0x00400000UL
|
122
|
+
|
123
|
+
#define NDR_CUSTOM_OR_DEFAULT_ALLOCATOR 0x10000000UL
|
124
|
+
#define NDR_DEFAULT_ALLOCATOR 0x20000000UL
|
125
|
+
#endif
|
126
|
+
|
127
|
+
#if (NTDDI_VERSION >= NTDDI_WIN8)
|
128
|
+
#define RPCFLG_NDR64_CONTAINS_ARM_LAYOUT 0x04000000UL
|
129
|
+
#endif
|
130
|
+
|
131
|
+
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
|
132
|
+
|
133
|
+
|
134
|
+
#define RPCFLG_SENDER_WAITING_FOR_REPLY 0x00800000UL
|
135
|
+
|
136
|
+
#endif
|
137
|
+
|
138
|
+
#define RPC_FLAGS_VALID_BIT 0x00008000
|
139
|
+
|
140
|
+
typedef void *RPC_DISPATCH_FUNCTION;
|
141
|
+
typedef struct {
|
142
|
+
unsigned int DispatchTableCount;
|
143
|
+
RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
|
144
|
+
LONG_PTR Reserved;
|
145
|
+
} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
|
146
|
+
|
147
|
+
typedef struct _RPC_PROTSEQ_ENDPOINT
|
148
|
+
{
|
149
|
+
unsigned char __RPC_FAR * RpcProtocolSequence;
|
150
|
+
unsigned char __RPC_FAR * Endpoint;
|
151
|
+
} RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
|
152
|
+
|
153
|
+
|
154
|
+
#define NT351_INTERFACE_SIZE 0x40
|
155
|
+
#define RPC_INTERFACE_HAS_PIPES 0x0001
|
156
|
+
|
157
|
+
typedef struct _RPC_SERVER_INTERFACE
|
158
|
+
{
|
159
|
+
unsigned int Length;
|
160
|
+
RPC_SYNTAX_IDENTIFIER InterfaceId;
|
161
|
+
RPC_SYNTAX_IDENTIFIER TransferSyntax;
|
162
|
+
PRPC_DISPATCH_TABLE DispatchTable;
|
163
|
+
unsigned int RpcProtseqEndpointCount;
|
164
|
+
PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
|
165
|
+
RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
|
166
|
+
void const __RPC_FAR *InterpreterInfo;
|
167
|
+
unsigned int Flags ;
|
168
|
+
} RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
|
169
|
+
|
170
|
+
typedef struct _RPC_CLIENT_INTERFACE
|
171
|
+
{
|
172
|
+
unsigned int Length;
|
173
|
+
RPC_SYNTAX_IDENTIFIER InterfaceId;
|
174
|
+
RPC_SYNTAX_IDENTIFIER TransferSyntax;
|
175
|
+
PRPC_DISPATCH_TABLE DispatchTable;
|
176
|
+
unsigned int RpcProtseqEndpointCount;
|
177
|
+
PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
|
178
|
+
ULONG_PTR Reserved;
|
179
|
+
void const __RPC_FAR * InterpreterInfo;
|
180
|
+
unsigned int Flags ;
|
181
|
+
} RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
|
182
|
+
|
183
|
+
|
184
|
+
#pragma endregion
|
185
|
+
|
186
|
+
|
187
|
+
#endif
|