turborex 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|