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,162 @@
|
|
1
|
+
#include "wintype.h"
|
2
|
+
#include "guiddef.h"
|
3
|
+
#include "rpc.h"
|
4
|
+
|
5
|
+
|
6
|
+
#define MAX_RPC_INTERFACE_ANNOTATION 64
|
7
|
+
#define SIMPLE_DICT_SMALL_ARRAY 4
|
8
|
+
#define MAX_SIMPLE_DICT_ENTRIES 0x200
|
9
|
+
|
10
|
+
//==============================================================================
|
11
|
+
// From Winnt.h
|
12
|
+
// The following structures are redefined to support Wow64 ptr
|
13
|
+
//
|
14
|
+
struct _RTL_CRITICAL_SECTION_T;
|
15
|
+
|
16
|
+
typedef struct _LIST_ENTRY_T {
|
17
|
+
struct _LIST_ENTRY PTR_T Flink;
|
18
|
+
struct _LIST_ENTRY PTR_T Blink;
|
19
|
+
} LIST_ENTRY_T, *PLIST_ENTRY_T;
|
20
|
+
|
21
|
+
|
22
|
+
typedef struct _RTL_CRITICAL_SECTION_DEBUG_T {
|
23
|
+
WORD Type;
|
24
|
+
WORD CreatorBackTraceIndex;
|
25
|
+
struct _RTL_CRITICAL_SECTION_T PTR_T CriticalSection;
|
26
|
+
LIST_ENTRY_T ProcessLocksList;
|
27
|
+
DWORD EntryCount;
|
28
|
+
DWORD ContentionCount;
|
29
|
+
DWORD Flags;
|
30
|
+
WORD CreatorBackTraceIndexHigh;
|
31
|
+
WORD SpareWORD;
|
32
|
+
} RTL_CRITICAL_SECTION_DEBUG_T, PTR_T PRTL_CRITICAL_SECTION_DEBUG_T;
|
33
|
+
|
34
|
+
typedef struct _RTL_CRITICAL_SECTION_T {
|
35
|
+
PRTL_CRITICAL_SECTION_DEBUG_T DebugInfo;
|
36
|
+
//
|
37
|
+
// The following three fields control entering and exiting the critical
|
38
|
+
// section for the resource
|
39
|
+
//
|
40
|
+
LONG LockCount;
|
41
|
+
LONG RecursionCount;
|
42
|
+
VOID PTR_T OwningThread; // from the thread's ClientId->UniqueThread
|
43
|
+
VOID PTR_T LockSemaphore;
|
44
|
+
VOID PTR_T SpinCount; // force size on 64-bit systems when packed
|
45
|
+
} RTL_CRITICAL_SECTION_T, PTR_T PRTL_CRITICAL_SECTION_T;
|
46
|
+
|
47
|
+
//==============================================================================
|
48
|
+
// From RpcDceP.h
|
49
|
+
//
|
50
|
+
typedef struct _RPC_DISPATCH_TABLE_T{
|
51
|
+
UINT DispatchTableCount;
|
52
|
+
RPC_DISPATCH_FUNCTION PTR_T DispatchTable;
|
53
|
+
ULONG_PTR_T Reserved;
|
54
|
+
} RPC_DISPATCH_TABLE_T, PTR_T PRPC_DISPATCH_TABLE_T;
|
55
|
+
|
56
|
+
typedef struct _RPC_PROTSEQ_ENDPOINT_T{
|
57
|
+
UCHAR PTR_T RpcProtocolSequence;
|
58
|
+
UCHAR PTR_T Endpoint;
|
59
|
+
} RPC_PROTSEQ_ENDPOINT_T, PTR_T PRPC_PROTSEQ_ENDPOINT_T;
|
60
|
+
|
61
|
+
typedef struct _RPC_SERVER_INTERFACE_T{
|
62
|
+
UINT Length;
|
63
|
+
RPC_IF_ID InterfaceId;
|
64
|
+
RPC_IF_ID TransferSyntax;
|
65
|
+
PRPC_DISPATCH_TABLE_T DispatchTable;
|
66
|
+
UINT RpcProtseqEndpointCount;
|
67
|
+
PRPC_PROTSEQ_ENDPOINT_T RpcProtseqEndpoint;
|
68
|
+
RPC_MGR_EPV PTR_T DefaultManagerEpv;
|
69
|
+
void const PTR_T InterpreterInfo;
|
70
|
+
UINT Flags;
|
71
|
+
} RPC_SERVER_INTERFACE_T, PTR_T PRPC_SERVER_INTERFACE_T;
|
72
|
+
|
73
|
+
|
74
|
+
typedef struct _NDR_EXPR_DESC_T
|
75
|
+
{
|
76
|
+
const unsigned short PTR_T pOffset;
|
77
|
+
const unsigned char PTR_T pFormatExpr;
|
78
|
+
} NDR_EXPR_DESC_T;
|
79
|
+
|
80
|
+
|
81
|
+
/*
|
82
|
+
* MIDL Stub Descriptor
|
83
|
+
*/
|
84
|
+
typedef struct _MIDL_STUB_DESC_T{
|
85
|
+
void PTR_T RpcInterfaceInformation;
|
86
|
+
void PTR_T pfnAllocate;
|
87
|
+
void PTR_T pfnFree;
|
88
|
+
void PTR_T pAutoHandle;
|
89
|
+
const VOID PTR_T apfnNdrRundownRoutines;
|
90
|
+
const VOID PTR_T aGenericBindingRoutinePairs;
|
91
|
+
const VOID PTR_T apfnExprEval;
|
92
|
+
const VOID PTR_T aXmitQuintuple;
|
93
|
+
const unsigned char PTR_T pFormatTypes;
|
94
|
+
int fCheckBounds;
|
95
|
+
/* Ndr library version. */
|
96
|
+
unsigned long Version;
|
97
|
+
VOID PTR_T pMallocFreeStruct;
|
98
|
+
long MIDLVersion;
|
99
|
+
const COMM_FAULT_OFFSETS PTR_T CommFaultOffsets;
|
100
|
+
// New fields for version 3.0+
|
101
|
+
const VOID PTR_T aUserMarshalQuadruple;
|
102
|
+
// Notify routines - added for NT5, MIDL 5.0
|
103
|
+
const VOID PTR_T NotifyRoutineTable;
|
104
|
+
/*
|
105
|
+
* Reserved for future use.
|
106
|
+
*/
|
107
|
+
ULONG_PTR_T mFlags;
|
108
|
+
// International support routines - added for 64bit post NT5
|
109
|
+
const VOID PTR_T CsRoutineTables;
|
110
|
+
void PTR_T ProxyServerInfo;
|
111
|
+
const NDR_EXPR_DESC_T PTR_T pExprInfo;
|
112
|
+
// Fields up to now present in win2000 release.
|
113
|
+
} MIDL_STUB_DESC_T, PTR_T PMIDL_STUB_DESC_T;
|
114
|
+
|
115
|
+
|
116
|
+
/*
|
117
|
+
* Server Interpreter's information strucuture.
|
118
|
+
*/
|
119
|
+
typedef struct _MIDL_SERVER_INFO_T{
|
120
|
+
PMIDL_STUB_DESC_T pStubDesc;
|
121
|
+
const VOID PTR_T PTR_T DispatchTable;
|
122
|
+
const unsigned char PTR_T ProcString;
|
123
|
+
const unsigned short PTR_T FmtStringOffset;
|
124
|
+
const VOID PTR_T PTR_T ThunkTable;
|
125
|
+
RPC_IF_ID PTR_T pTransferSyntax;
|
126
|
+
ULONG_PTR_T nCount;
|
127
|
+
VOID PTR_T pSyntaxInfo;
|
128
|
+
} MIDL_SERVER_INFO_T, PTR_T PMIDL_SERVER_INFO_T;
|
129
|
+
|
130
|
+
//==============================================================================
|
131
|
+
// Common private structures from rpctr4.dll.
|
132
|
+
// These structures seems to be constant on all the runtime versions.
|
133
|
+
//
|
134
|
+
#pragma pack(1)
|
135
|
+
typedef struct _SIMPLE_DICT_T{
|
136
|
+
VOID PTR_T PTR_T pArray;
|
137
|
+
UINT ArraySizeInBytes; //to change : countof array elements
|
138
|
+
UINT NumberOfEntries;
|
139
|
+
VOID PTR_T SmallArray[SIMPLE_DICT_SMALL_ARRAY];
|
140
|
+
}SIMPLE_DICT_T, PTR_T PSIMPLE_DICT_T;
|
141
|
+
|
142
|
+
typedef struct _QUEUE_T{
|
143
|
+
VOID PTR_T Tail;
|
144
|
+
VOID PTR_T Head;
|
145
|
+
ULONG Lentgh;
|
146
|
+
VOID PTR_T SmallArray[SIMPLE_DICT_SMALL_ARRAY];
|
147
|
+
}QUEUE_T;
|
148
|
+
|
149
|
+
typedef struct _MUTEX_T{
|
150
|
+
RTL_CRITICAL_SECTION_T CriticalSection;
|
151
|
+
}MUTEX_T;
|
152
|
+
|
153
|
+
typedef struct _EVENT_T{
|
154
|
+
ULONG hEvent;
|
155
|
+
} EVENT_T;
|
156
|
+
|
157
|
+
#pragma pack()
|
158
|
+
|
159
|
+
#define RPC_ADDRESS_TYPE_DG 0x400000
|
160
|
+
#define RPC_ADDRESS_TYPE_LRPC 0x800000
|
161
|
+
#define RPC_ADDRESS_TYPE_OSF 0x800
|
162
|
+
|
@@ -0,0 +1,191 @@
|
|
1
|
+
|
2
|
+
#ifndef GUID_DEFINED
|
3
|
+
#define GUID_DEFINED
|
4
|
+
#if defined(__midl)
|
5
|
+
typedef struct {
|
6
|
+
unsigned long Data1;
|
7
|
+
unsigned short Data2;
|
8
|
+
unsigned short Data3;
|
9
|
+
byte Data4[ 8 ];
|
10
|
+
} GUID;
|
11
|
+
#else
|
12
|
+
typedef struct _GUID {
|
13
|
+
unsigned long Data1;
|
14
|
+
unsigned short Data2;
|
15
|
+
unsigned short Data3;
|
16
|
+
unsigned char Data4[ 8 ];
|
17
|
+
} GUID;
|
18
|
+
#endif
|
19
|
+
#endif
|
20
|
+
|
21
|
+
#ifndef FAR
|
22
|
+
#ifdef _WIN32
|
23
|
+
#define FAR
|
24
|
+
#else
|
25
|
+
#define FAR _far
|
26
|
+
#endif
|
27
|
+
#endif
|
28
|
+
|
29
|
+
#ifndef DECLSPEC_SELECTANY
|
30
|
+
#if (_MSC_VER >= 1100)
|
31
|
+
#define DECLSPEC_SELECTANY __declspec(selectany)
|
32
|
+
#else
|
33
|
+
#define DECLSPEC_SELECTANY
|
34
|
+
#endif
|
35
|
+
#endif
|
36
|
+
|
37
|
+
#ifndef EXTERN_C
|
38
|
+
#ifdef __cplusplus
|
39
|
+
#define EXTERN_C extern "C"
|
40
|
+
#else
|
41
|
+
#define EXTERN_C extern
|
42
|
+
#endif
|
43
|
+
#endif
|
44
|
+
|
45
|
+
#ifdef DEFINE_GUID
|
46
|
+
#undef DEFINE_GUID
|
47
|
+
#endif
|
48
|
+
|
49
|
+
#ifdef INITGUID
|
50
|
+
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
51
|
+
EXTERN_C const GUID DECLSPEC_SELECTANY name \
|
52
|
+
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
|
53
|
+
#else
|
54
|
+
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
55
|
+
EXTERN_C const GUID FAR name
|
56
|
+
#endif // INITGUID
|
57
|
+
|
58
|
+
#define DEFINE_OLEGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
|
59
|
+
|
60
|
+
#ifndef _GUIDDEF_H_
|
61
|
+
#define _GUIDDEF_H_
|
62
|
+
|
63
|
+
#ifndef __LPGUID_DEFINED__
|
64
|
+
#define __LPGUID_DEFINED__
|
65
|
+
typedef GUID *LPGUID;
|
66
|
+
#endif
|
67
|
+
|
68
|
+
#ifndef __LPCGUID_DEFINED__
|
69
|
+
#define __LPCGUID_DEFINED__
|
70
|
+
typedef const GUID *LPCGUID;
|
71
|
+
#endif
|
72
|
+
|
73
|
+
#ifndef __IID_DEFINED__
|
74
|
+
#define __IID_DEFINED__
|
75
|
+
|
76
|
+
typedef GUID IID;
|
77
|
+
typedef IID *LPIID;
|
78
|
+
#define IID_NULL GUID_NULL
|
79
|
+
#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
|
80
|
+
typedef GUID CLSID;
|
81
|
+
typedef CLSID *LPCLSID;
|
82
|
+
#define CLSID_NULL GUID_NULL
|
83
|
+
#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
|
84
|
+
typedef GUID FMTID;
|
85
|
+
typedef FMTID *LPFMTID;
|
86
|
+
#define FMTID_NULL GUID_NULL
|
87
|
+
#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
|
88
|
+
|
89
|
+
#ifdef __midl_proxy
|
90
|
+
#define __MIDL_CONST
|
91
|
+
#else
|
92
|
+
#define __MIDL_CONST const
|
93
|
+
#endif
|
94
|
+
|
95
|
+
#ifndef _REFGUID_DEFINED
|
96
|
+
#define _REFGUID_DEFINED
|
97
|
+
#ifdef __cplusplus
|
98
|
+
#define REFGUID const GUID &
|
99
|
+
#else
|
100
|
+
#define REFGUID const GUID * __MIDL_CONST
|
101
|
+
#endif
|
102
|
+
#endif
|
103
|
+
|
104
|
+
#ifndef _REFIID_DEFINED
|
105
|
+
#define _REFIID_DEFINED
|
106
|
+
#ifdef __cplusplus
|
107
|
+
#define REFIID const IID &
|
108
|
+
#else
|
109
|
+
#define REFIID const IID * __MIDL_CONST
|
110
|
+
#endif
|
111
|
+
#endif
|
112
|
+
|
113
|
+
#ifndef _REFCLSID_DEFINED
|
114
|
+
#define _REFCLSID_DEFINED
|
115
|
+
#ifdef __cplusplus
|
116
|
+
#define REFCLSID const IID &
|
117
|
+
#else
|
118
|
+
#define REFCLSID const IID * __MIDL_CONST
|
119
|
+
#endif
|
120
|
+
#endif
|
121
|
+
|
122
|
+
#ifndef _REFFMTID_DEFINED
|
123
|
+
#define _REFFMTID_DEFINED
|
124
|
+
#ifdef __cplusplus
|
125
|
+
#define REFFMTID const IID &
|
126
|
+
#else
|
127
|
+
#define REFFMTID const IID * __MIDL_CONST
|
128
|
+
#endif
|
129
|
+
#endif
|
130
|
+
|
131
|
+
#endif // !__IID_DEFINED__
|
132
|
+
|
133
|
+
#if !defined (__midl)
|
134
|
+
#if !defined (_SYS_GUID_OPERATORS_)
|
135
|
+
#define _SYS_GUID_OPERATORS_
|
136
|
+
|
137
|
+
#ifdef __cplusplus
|
138
|
+
__inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
|
139
|
+
{
|
140
|
+
return (
|
141
|
+
((unsigned long *) &rguid1)[0] == ((unsigned long *) &rguid2)[0] &&
|
142
|
+
((unsigned long *) &rguid1)[1] == ((unsigned long *) &rguid2)[1] &&
|
143
|
+
((unsigned long *) &rguid1)[2] == ((unsigned long *) &rguid2)[2] &&
|
144
|
+
((unsigned long *) &rguid1)[3] == ((unsigned long *) &rguid2)[3]);
|
145
|
+
}
|
146
|
+
|
147
|
+
__inline int IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
|
148
|
+
{
|
149
|
+
return !memcmp(&rguid1, &rguid2, sizeof(GUID));
|
150
|
+
}
|
151
|
+
|
152
|
+
#else
|
153
|
+
|
154
|
+
#define InlineIsEqualGUID(rguid1, rguid2) \
|
155
|
+
(((unsigned long *) rguid1)[0] == ((unsigned long *) rguid2)[0] && \
|
156
|
+
((unsigned long *) rguid1)[1] == ((unsigned long *) rguid2)[1] && \
|
157
|
+
((unsigned long *) rguid1)[2] == ((unsigned long *) rguid2)[2] && \
|
158
|
+
((unsigned long *) rguid1)[3] == ((unsigned long *) rguid2)[3])
|
159
|
+
|
160
|
+
#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
|
161
|
+
|
162
|
+
#endif
|
163
|
+
|
164
|
+
#ifdef __INLINE_ISEQUAL_GUID
|
165
|
+
#undef IsEqualGUID
|
166
|
+
#define IsEqualGUID(rguid1, rguid2) InlineIsEqualGUID(rguid1, rguid2)
|
167
|
+
#endif
|
168
|
+
|
169
|
+
|
170
|
+
#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
|
171
|
+
#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
|
172
|
+
|
173
|
+
|
174
|
+
#if !defined _SYS_GUID_OPERATOR_EQ_ && !defined _NO_SYS_GUID_OPERATOR_EQ_
|
175
|
+
#define _SYS_GUID_OPERATOR_EQ_
|
176
|
+
|
177
|
+
#ifdef __cplusplus
|
178
|
+
__inline bool operator==(REFGUID guidOne, REFGUID guidOther)
|
179
|
+
{
|
180
|
+
return !!IsEqualGUID(guidOne,guidOther);
|
181
|
+
}
|
182
|
+
|
183
|
+
__inline bool operator!=(REFGUID guidOne, REFGUID guidOther)
|
184
|
+
{
|
185
|
+
return !(guidOne == guidOther);
|
186
|
+
}
|
187
|
+
#endif
|
188
|
+
#endif
|
189
|
+
#endif
|
190
|
+
#endif
|
191
|
+
#endif
|
@@ -0,0 +1,262 @@
|
|
1
|
+
#include "wintype.h"
|
2
|
+
#pragma pack(push, 1)
|
3
|
+
|
4
|
+
typedef struct
|
5
|
+
{
|
6
|
+
unsigned short MustSize : 1;
|
7
|
+
unsigned short MustFree : 1;
|
8
|
+
unsigned short IsPipe : 1;
|
9
|
+
unsigned short IsIn : 1;
|
10
|
+
unsigned short IsOut : 1;
|
11
|
+
unsigned short IsReturn : 1;
|
12
|
+
unsigned short IsBasetype : 1;
|
13
|
+
unsigned short IsByValue : 1;
|
14
|
+
unsigned short IsSimpleRef : 1;
|
15
|
+
unsigned short IsDontCallFreeInst : 1;
|
16
|
+
unsigned short SaveForAsyncFinish : 1;
|
17
|
+
unsigned short Unused : 2;
|
18
|
+
unsigned short ServerAllocSize : 3;
|
19
|
+
} PARAM_ATTRIBUTES;
|
20
|
+
typedef struct _INTERPRETER_OPT_FLAGS
|
21
|
+
{
|
22
|
+
unsigned char ServerMustSize : 1;
|
23
|
+
unsigned char ClientMustSize : 1;
|
24
|
+
unsigned char HasReturn : 1;
|
25
|
+
unsigned char HasPipes : 1;
|
26
|
+
unsigned char Unused : 1;
|
27
|
+
unsigned char HasAsyncUuid : 1;
|
28
|
+
unsigned char HasExtensions : 1;
|
29
|
+
unsigned char HasAsyncHandle : 1;
|
30
|
+
} INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS;
|
31
|
+
|
32
|
+
typedef struct _INTERPRETER_OPT_FLAGS2
|
33
|
+
{
|
34
|
+
unsigned char HasNewCorrDesc : 1;
|
35
|
+
unsigned char ClientCorrCheck : 1;
|
36
|
+
unsigned char ServerCorrCheck : 1;
|
37
|
+
unsigned char HasNotify : 1;
|
38
|
+
unsigned char HasNotify2 : 1;
|
39
|
+
unsigned char Unused : 3;
|
40
|
+
} INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2;
|
41
|
+
|
42
|
+
|
43
|
+
typedef struct _Oi_Header_HType_Flags_t
|
44
|
+
{
|
45
|
+
BYTE HandleType;
|
46
|
+
BYTE OiFlags;
|
47
|
+
} Oi_Header_HType_Flags_t;
|
48
|
+
|
49
|
+
typedef struct _ProcNum_StackSize_t
|
50
|
+
{
|
51
|
+
WORD ProcNum;
|
52
|
+
SHORT StackSize;
|
53
|
+
}ProcNum_StackSize_t;
|
54
|
+
|
55
|
+
typedef struct _Handle_Desc_Common_t
|
56
|
+
{
|
57
|
+
unsigned char HandleType;
|
58
|
+
union {
|
59
|
+
unsigned char Flag;
|
60
|
+
unsigned char FlagAndSize;
|
61
|
+
};
|
62
|
+
SHORT Offset;
|
63
|
+
}Handle_Desc_Common_t;
|
64
|
+
|
65
|
+
typedef struct _ExplicitHandlePrimitive_t
|
66
|
+
{
|
67
|
+
Handle_Desc_Common_t Common;
|
68
|
+
} ExplicitHandlePrimitive_t;
|
69
|
+
typedef struct _ExplicitHandleGeneric_t
|
70
|
+
{
|
71
|
+
Handle_Desc_Common_t Common;
|
72
|
+
unsigned char BindingRoutinePairIndex;
|
73
|
+
unsigned char PAD;
|
74
|
+
} ExplicitHandleGeneric_t;
|
75
|
+
|
76
|
+
typedef struct _ExplicitHandleContext_t
|
77
|
+
{
|
78
|
+
Handle_Desc_Common_t Common;
|
79
|
+
unsigned char ContextRundownRoutineIndex;
|
80
|
+
unsigned char ParamNum;
|
81
|
+
} ExplicitHandleContext_t;
|
82
|
+
|
83
|
+
typedef struct _Oi_Header_t
|
84
|
+
{
|
85
|
+
Oi_Header_HType_Flags_t part1;
|
86
|
+
DWORD rpc_flags;
|
87
|
+
ProcNum_StackSize_t part2;
|
88
|
+
} Oi_Header_t;
|
89
|
+
|
90
|
+
typedef struct _Oi_Header_Without_RPCFlags_t
|
91
|
+
{
|
92
|
+
Oi_Header_HType_Flags_t part1;
|
93
|
+
ProcNum_StackSize_t part2;
|
94
|
+
} Oi_Header_Without_RPCFlags_t;
|
95
|
+
|
96
|
+
|
97
|
+
typedef struct _Oif_Header_t
|
98
|
+
{
|
99
|
+
SHORT ConstantClientBufferSize;
|
100
|
+
SHORT ConstantServerBufferSize;
|
101
|
+
INTERPRETER_OPT_FLAGS InterpreterOptFlags;
|
102
|
+
unsigned char NumberOfParams;
|
103
|
+
} Oif_Header_t;
|
104
|
+
|
105
|
+
typedef struct _WIN2K_EXT
|
106
|
+
{
|
107
|
+
unsigned char ExtensionVersion;
|
108
|
+
INTERPRETER_OPT_FLAGS2 Flags2;
|
109
|
+
unsigned short ClientCorrHint;
|
110
|
+
unsigned short ServerCorrHint;
|
111
|
+
unsigned short NotifyIndex;
|
112
|
+
} WIN2K_EXT;
|
113
|
+
|
114
|
+
typedef struct _WIN2K_EXT64
|
115
|
+
{
|
116
|
+
unsigned char ExtensionVersion;
|
117
|
+
INTERPRETER_OPT_FLAGS2 Flags2;
|
118
|
+
unsigned short ClientCorrHint;
|
119
|
+
unsigned short ServerCorrHint;
|
120
|
+
unsigned short NotifyIndex;
|
121
|
+
unsigned short FloatDoubleMask;
|
122
|
+
} WIN2K_EXT64;
|
123
|
+
|
124
|
+
typedef struct _Oi_Param_Desc_BaseType_t
|
125
|
+
{
|
126
|
+
unsigned char ParamBaseType;
|
127
|
+
unsigned char SimpleType;
|
128
|
+
} Oi_Param_Desc_Simple_t;
|
129
|
+
|
130
|
+
typedef struct _Oi_Param_Desc_Other_t
|
131
|
+
{
|
132
|
+
unsigned char ParamDirection;
|
133
|
+
unsigned char StackSize;
|
134
|
+
SHORT TypeOffset;
|
135
|
+
} Oi_Param_Desc_Other_t;
|
136
|
+
|
137
|
+
typedef struct _Oif_ParamDesc_Header_t
|
138
|
+
{
|
139
|
+
PARAM_ATTRIBUTES ParamAttributes;
|
140
|
+
SHORT StackOffset;
|
141
|
+
} Oif_ParamDesc_Header_t;
|
142
|
+
|
143
|
+
typedef struct _Oif_Param_Desc_BaseType_t
|
144
|
+
{
|
145
|
+
Oif_ParamDesc_Header_t Header;
|
146
|
+
unsigned char TypeFormatChar;
|
147
|
+
unsigned char Unused;
|
148
|
+
} Oif_Param_Desc_BaseType_t;
|
149
|
+
|
150
|
+
typedef struct _Oif_Param_Desc_Other_t
|
151
|
+
{
|
152
|
+
Oif_ParamDesc_Header_t Header;
|
153
|
+
SHORT TypeOffset;
|
154
|
+
} Oif_Param_Desc_Other_t;
|
155
|
+
|
156
|
+
/* Type Format String */
|
157
|
+
typedef struct _CommonPtr_Header_t
|
158
|
+
{
|
159
|
+
unsigned char PointerType;
|
160
|
+
unsigned char PointerAttributes;
|
161
|
+
} CommonPtr_Header_t;
|
162
|
+
typedef struct _CommonPtr_Simple_t
|
163
|
+
{
|
164
|
+
CommonPtr_Header_t Header;
|
165
|
+
unsigned char SimpleType;
|
166
|
+
unsigned char Pad;
|
167
|
+
} CommonPtr_Simple_t;
|
168
|
+
|
169
|
+
typedef struct _CommonPtr_Complex_t
|
170
|
+
{
|
171
|
+
CommonPtr_Header_t Header;
|
172
|
+
SHORT Offset;
|
173
|
+
} CommonPtr_Complex_t;
|
174
|
+
|
175
|
+
/* Array */
|
176
|
+
typedef struct _SM_FArray_Header_t
|
177
|
+
{
|
178
|
+
unsigned char Type;
|
179
|
+
unsigned char Alignment;
|
180
|
+
SHORT TotalSize;
|
181
|
+
}SM_FArray_Header_t;
|
182
|
+
|
183
|
+
typedef struct _LG_FArray_Header_t
|
184
|
+
{
|
185
|
+
unsigned char Type;
|
186
|
+
unsigned char Alignment;
|
187
|
+
INT32 TotalSize;
|
188
|
+
}LG_FArray_Header_t;
|
189
|
+
|
190
|
+
typedef struct _Conformant_Array_Header_t
|
191
|
+
{
|
192
|
+
unsigned char Type;
|
193
|
+
unsigned char Alignment;
|
194
|
+
INT32 ElementSize;
|
195
|
+
}Conformant_Array_Header_t;
|
196
|
+
|
197
|
+
typedef Conformant_Array_Header_t Conformant_Varying_Array_Header_t;
|
198
|
+
|
199
|
+
typedef struct _SM_VArray_Header_t
|
200
|
+
{
|
201
|
+
unsigned char Type;
|
202
|
+
unsigned char Alignment;
|
203
|
+
SHORT TotalSize;
|
204
|
+
SHORT NumberElements;
|
205
|
+
SHORT ElementSize;
|
206
|
+
}SM_VArray_Header_t;
|
207
|
+
|
208
|
+
typedef struct _LG_VArray_Header_t
|
209
|
+
{
|
210
|
+
unsigned char Type;
|
211
|
+
unsigned char Alignment;
|
212
|
+
INT32 TotalSize;
|
213
|
+
INT32 NumberElements;
|
214
|
+
SHORT ElementSize;
|
215
|
+
INT32 VarianceDescription;
|
216
|
+
}LG_VArray_Header_t;
|
217
|
+
|
218
|
+
typedef struct _ComplexArray_Header_t
|
219
|
+
{
|
220
|
+
unsigned char Type;
|
221
|
+
unsigned char Alignment;
|
222
|
+
SHORT NumberElements;
|
223
|
+
}ComplexArray_Header_t;
|
224
|
+
|
225
|
+
|
226
|
+
/* Pointer Layout */
|
227
|
+
typedef struct _Pointer_Instance_t
|
228
|
+
{
|
229
|
+
SHORT PtrOffsetInMem;
|
230
|
+
SHORT PtrOffsetInBuf;
|
231
|
+
union {
|
232
|
+
CommonPtr_Simple_t Simple;
|
233
|
+
CommonPtr_Complex_t Complex;
|
234
|
+
} PtrDesc;
|
235
|
+
}Pointer_Instance_t;
|
236
|
+
|
237
|
+
typedef struct _No_Repeat_Layout_t
|
238
|
+
{
|
239
|
+
unsigned char Type;
|
240
|
+
unsigned char Pad;
|
241
|
+
Pointer_Instance_t PtrInstance;
|
242
|
+
}No_Repeat_Layout_t;
|
243
|
+
|
244
|
+
typedef struct _Fixed_Repeat_Layout_Header_t
|
245
|
+
{
|
246
|
+
unsigned char Type;
|
247
|
+
unsigned char Pad;
|
248
|
+
SHORT Iterations;
|
249
|
+
SHORT Increment;
|
250
|
+
SHORT OffsetToArray;
|
251
|
+
SHORT NumberOfPointers;
|
252
|
+
} Fixed_Repeat_Layout_Header_t;
|
253
|
+
|
254
|
+
typedef struct _Variable_Repeat_Layout_Header_t
|
255
|
+
{
|
256
|
+
unsigned char Type;
|
257
|
+
unsigned char OffsetType;
|
258
|
+
SHORT Increment;
|
259
|
+
SHORT OffsetToArray;
|
260
|
+
SHORT NumberOfPointers;
|
261
|
+
} Variable_Repeat_Layout_Header_t;
|
262
|
+
#pragma pack(pop)
|