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,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)
|