turborex 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +38 -0
  4. data/README.rdoc +19 -0
  5. data/examples/alpc_client.rb +15 -0
  6. data/examples/alpc_server.rb +14 -0
  7. data/examples/com_client.rb +19 -0
  8. data/examples/com_finder.rb +39 -0
  9. data/examples/create_instance.rb +15 -0
  10. data/examples/cstruct.rb +19 -0
  11. data/examples/find_com_client_calls.rb +16 -0
  12. data/examples/find_rpc_security_callback.rb +12 -0
  13. data/examples/rpc_finder.rb +117 -0
  14. data/examples/scan_exports.rb +5 -0
  15. data/examples/scan_imports.rb +5 -0
  16. data/examples/tinysdk.rb +17 -0
  17. data/lib/turborex.rb +21 -0
  18. data/lib/turborex/cstruct.rb +565 -0
  19. data/lib/turborex/cstruct/struct_helper.rb +7 -0
  20. data/lib/turborex/exception.rb +65 -0
  21. data/lib/turborex/fuzzer.rb +204 -0
  22. data/lib/turborex/fuzzer/containers.rb +115 -0
  23. data/lib/turborex/fuzzer/coverage.rb +67 -0
  24. data/lib/turborex/fuzzer/mutators.rb +25 -0
  25. data/lib/turborex/fuzzer/seed.rb +30 -0
  26. data/lib/turborex/monkey.rb +11 -0
  27. data/lib/turborex/msrpc.rb +14 -0
  28. data/lib/turborex/msrpc/decompiler.rb +244 -0
  29. data/lib/turborex/msrpc/midl.rb +747 -0
  30. data/lib/turborex/msrpc/ndrtype.rb +167 -0
  31. data/lib/turborex/msrpc/rpcbase.rb +777 -0
  32. data/lib/turborex/msrpc/rpcfinder.rb +1426 -0
  33. data/lib/turborex/msrpc/utils.rb +70 -0
  34. data/lib/turborex/pefile.rb +8 -0
  35. data/lib/turborex/pefile/pe.rb +61 -0
  36. data/lib/turborex/pefile/scanner.rb +82 -0
  37. data/lib/turborex/utils.rb +321 -0
  38. data/lib/turborex/windows.rb +402 -0
  39. data/lib/turborex/windows/alpc.rb +844 -0
  40. data/lib/turborex/windows/com.rb +266 -0
  41. data/lib/turborex/windows/com/client.rb +84 -0
  42. data/lib/turborex/windows/com/com_finder.rb +330 -0
  43. data/lib/turborex/windows/com/com_registry.rb +100 -0
  44. data/lib/turborex/windows/com/interface.rb +522 -0
  45. data/lib/turborex/windows/com/utils.rb +210 -0
  46. data/lib/turborex/windows/constants.rb +82 -0
  47. data/lib/turborex/windows/process.rb +56 -0
  48. data/lib/turborex/windows/security.rb +12 -0
  49. data/lib/turborex/windows/security/ace.rb +76 -0
  50. data/lib/turborex/windows/security/acl.rb +25 -0
  51. data/lib/turborex/windows/security/security_descriptor.rb +118 -0
  52. data/lib/turborex/windows/tinysdk.rb +89 -0
  53. data/lib/turborex/windows/utils.rb +138 -0
  54. data/resources/headers/alpc/ntdef.h +72 -0
  55. data/resources/headers/alpc/ntlpcapi.h +1014 -0
  56. data/resources/headers/rpc/common.h +162 -0
  57. data/resources/headers/rpc/guiddef.h +191 -0
  58. data/resources/headers/rpc/internal_ndrtypes.h +262 -0
  59. data/resources/headers/rpc/rpc.h +10 -0
  60. data/resources/headers/rpc/rpcdce.h +266 -0
  61. data/resources/headers/rpc/rpcdcep.h +187 -0
  62. data/resources/headers/rpc/rpcndr.h +39 -0
  63. data/resources/headers/rpc/v4_x64/rpcinternals.h +154 -0
  64. data/resources/headers/rpc/wintype.h +517 -0
  65. data/resources/headers/tinysdk/tinysdk.h +5 -0
  66. data/resources/headers/tinysdk/tinysdk/comdef.h +645 -0
  67. data/resources/headers/tinysdk/tinysdk/dbghelp.h +118 -0
  68. data/resources/headers/tinysdk/tinysdk/guiddef.h +194 -0
  69. data/resources/headers/tinysdk/tinysdk/memoryapi.h +12 -0
  70. data/resources/headers/tinysdk/tinysdk/poppack.h +12 -0
  71. data/resources/headers/tinysdk/tinysdk/pshpack4.h +13 -0
  72. data/resources/headers/tinysdk/tinysdk/winnt.h +1059 -0
  73. data/resources/headers/tinysdk/tinysdk/wintype.h +326 -0
  74. metadata +290 -0
@@ -0,0 +1,5 @@
1
+ #include <tinysdk/wintype.h>
2
+ #include <tinysdk/winnt.h>
3
+ #include <tinysdk/comdef.h>
4
+ #include <tinysdk/dbghelp.h>
5
+ #include <tinysdk/memoryapi.h>
@@ -0,0 +1,645 @@
1
+ #include "rpc.h"
2
+ #define BEGIN_INTERFACE
3
+ #define END_INTERFACE
4
+ #define _COM_Outptr_
5
+ #define CONST_VTBL
6
+ #define STDMETHODCALLTYPE __stdcall
7
+ #define interface struct
8
+ #define _Inout_
9
+ #define _Out_opt_
10
+ #define _Out_
11
+ #define _Outptr_
12
+ #define _In_opt_
13
+
14
+ typedef struct _COAUTHIDENTITY
15
+ {
16
+ /* [size_is] */ USHORT *User;
17
+ /* [range] */ ULONG UserLength;
18
+ /* [size_is] */ USHORT *Domain;
19
+ /* [range] */ ULONG DomainLength;
20
+ /* [size_is] */ USHORT *Password;
21
+ /* [range] */ ULONG PasswordLength;
22
+ ULONG Flags;
23
+ } COAUTHIDENTITY;
24
+
25
+
26
+ typedef struct _COAUTHINFO
27
+ {
28
+ DWORD dwAuthnSvc;
29
+ DWORD dwAuthzSvc;
30
+ LPWSTR pwszServerPrincName;
31
+ DWORD dwAuthnLevel;
32
+ DWORD dwImpersonationLevel;
33
+ COAUTHIDENTITY *pAuthIdentityData;
34
+ DWORD dwCapabilities;
35
+ } COAUTHINFO;
36
+
37
+ typedef struct _COSERVERINFO
38
+ {
39
+ DWORD dwReserved1;
40
+ LPWSTR pwszName;
41
+ COAUTHINFO *pAuthInfo;
42
+ DWORD dwReserved2;
43
+ } COSERVERINFO;
44
+
45
+ typedef struct _FILETIME {
46
+ DWORD dwLowDateTime;
47
+ DWORD dwHighDateTime;
48
+ } FILETIME, *PFILETIME, *LPFILETIME;
49
+
50
+ typedef enum tagCOINIT
51
+ {
52
+ COINIT_APARTMENTTHREADED = 0x2, /* Apartment model */
53
+ COINIT_MULTITHREADED = 0x0, /* OLE calls objects on any thread */
54
+ COINIT_DISABLE_OLE1DDE = 0x4, /* Don't use DDE for Ole1 support */
55
+ COINIT_SPEED_OVER_MEMORY = 0x8 /* Trade memory for speed */
56
+ } COINIT;
57
+
58
+ typedef ULONG RPCOLEDATAREP;
59
+
60
+ typedef struct tagRPCOLEMESSAGE
61
+ {
62
+ void *reserved1;
63
+ RPCOLEDATAREP dataRepresentation;
64
+ void *Buffer;
65
+ ULONG cbBuffer;
66
+ ULONG iMethod;
67
+ void *reserved2[ 5 ];
68
+ ULONG rpcFlags;
69
+ } RPCOLEMESSAGE;
70
+
71
+ typedef struct tagSTATSTG
72
+ {
73
+ LPOLESTR pwcsName;
74
+ DWORD type;
75
+ ULARGE_INTEGER cbSize;
76
+ FILETIME mtime;
77
+ FILETIME ctime;
78
+ FILETIME atime;
79
+ DWORD grfMode;
80
+ DWORD grfLocksSupported;
81
+ CLSID clsid;
82
+ DWORD grfStateBits;
83
+ DWORD reserved;
84
+ } STATSTG;
85
+
86
+ /* interface IUnkown */
87
+ typedef interface IUnknown IUnknown;
88
+
89
+ typedef struct IUnknownVtbl
90
+ {
91
+ BEGIN_INTERFACE
92
+
93
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
94
+ IUnknown * This,
95
+ REFIID riid,
96
+ _COM_Outptr_ void **ppvObject);
97
+
98
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
99
+ IUnknown * This);
100
+
101
+ ULONG ( STDMETHODCALLTYPE *Release )(
102
+ IUnknown * This);
103
+ END_INTERFACE
104
+ } IUnknownVtbl;
105
+
106
+ interface IUnknown
107
+ {
108
+ CONST_VTBL struct IUnknownVtbl *lpVtbl;
109
+ };
110
+
111
+ typedef IUnknown *LPUNKNOWN;
112
+
113
+ typedef struct tagMULTI_QI
114
+ {
115
+ const IID *pIID;
116
+ IUnknown *pItf;
117
+ HRESULT hr;
118
+ } MULTI_QI;
119
+
120
+ /* interface IClassFactory */
121
+ typedef interface IClassFactory IClassFactory;
122
+ typedef struct IClassFactoryVtbl
123
+ {
124
+ BEGIN_INTERFACE
125
+
126
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
127
+ IClassFactory * This,
128
+ REFIID riid,
129
+ _COM_Outptr_ void **ppvObject);
130
+
131
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
132
+ IClassFactory * This);
133
+
134
+ ULONG ( STDMETHODCALLTYPE *Release )(
135
+ IClassFactory * This);
136
+
137
+ HRESULT ( STDMETHODCALLTYPE *CreateInstance )(
138
+ IClassFactory * This,
139
+ IUnknown *pUnkOuter,
140
+ REFIID riid,
141
+ _COM_Outptr_ void **ppvObject);
142
+
143
+ HRESULT ( STDMETHODCALLTYPE *LockServer )(
144
+ IClassFactory * This,
145
+ BOOL fLock);
146
+
147
+ END_INTERFACE
148
+ } IClassFactoryVtbl;
149
+
150
+ interface IClassFactory
151
+ {
152
+ CONST_VTBL struct IClassFactoryVtbl *lpVtbl;
153
+ };
154
+
155
+
156
+ /* IStream */
157
+ typedef interface IStream IStream;
158
+ typedef struct IStreamVtbl
159
+ {
160
+ BEGIN_INTERFACE
161
+
162
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
163
+ IStream * This,
164
+ REFIID riid,
165
+ _COM_Outptr_ void **ppvObject);
166
+
167
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
168
+ IStream * This);
169
+
170
+ ULONG ( STDMETHODCALLTYPE *Release )(
171
+ IStream * This);
172
+
173
+ HRESULT ( STDMETHODCALLTYPE *Read )(
174
+ IStream * This,
175
+ void *pv,
176
+ ULONG cb,
177
+ ULONG *pcbRead);
178
+
179
+ HRESULT ( STDMETHODCALLTYPE *Write )(
180
+ IStream * This,
181
+ const void *pv,
182
+ ULONG cb,
183
+ ULONG *pcbWritten);
184
+
185
+ HRESULT ( STDMETHODCALLTYPE *Seek )(
186
+ IStream * This,
187
+ LARGE_INTEGER dlibMove,
188
+ DWORD dwOrigin,
189
+ ULARGE_INTEGER *plibNewPosition);
190
+
191
+ HRESULT ( STDMETHODCALLTYPE *SetSize )(
192
+ IStream * This,
193
+ ULARGE_INTEGER libNewSize);
194
+
195
+ HRESULT ( STDMETHODCALLTYPE *CopyTo )(
196
+ IStream * This,
197
+ IStream *pstm,
198
+ ULARGE_INTEGER cb,
199
+ ULARGE_INTEGER *pcbRead,
200
+ ULARGE_INTEGER *pcbWritten);
201
+
202
+ HRESULT ( STDMETHODCALLTYPE *Commit )(
203
+ IStream * This,
204
+ DWORD grfCommitFlags);
205
+
206
+ HRESULT ( STDMETHODCALLTYPE *Revert )(
207
+ IStream * This);
208
+
209
+ HRESULT ( STDMETHODCALLTYPE *LockRegion )(
210
+ IStream * This,
211
+ ULARGE_INTEGER libOffset,
212
+ ULARGE_INTEGER cb,
213
+ DWORD dwLockType);
214
+
215
+ HRESULT ( STDMETHODCALLTYPE *UnlockRegion )(
216
+ IStream * This,
217
+ ULARGE_INTEGER libOffset,
218
+ ULARGE_INTEGER cb,
219
+ DWORD dwLockType);
220
+
221
+ HRESULT ( STDMETHODCALLTYPE *Stat )(
222
+ IStream * This,
223
+ STATSTG *pstatstg,
224
+ DWORD grfStatFlag);
225
+
226
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
227
+ IStream * This,
228
+ IStream **ppstm);
229
+
230
+ END_INTERFACE
231
+ } IStreamVtbl;
232
+
233
+ interface IStream
234
+ {
235
+ CONST_VTBL struct IStreamVtbl *lpVtbl;
236
+ };
237
+
238
+ typedef IStream *LPSTREAM;
239
+
240
+
241
+ /* IEnumSTATSTG */
242
+ typedef interface IEnumSTATSTG IEnumSTATSTG;
243
+ typedef struct IEnumSTATSTGVtbl
244
+ {
245
+ BEGIN_INTERFACE
246
+
247
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
248
+ IEnumSTATSTG * This,
249
+ REFIID riid,
250
+ void **ppvObject);
251
+
252
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
253
+ IEnumSTATSTG * This);
254
+
255
+ ULONG ( STDMETHODCALLTYPE *Release )(
256
+ IEnumSTATSTG * This);
257
+
258
+ HRESULT ( STDMETHODCALLTYPE *Next )(
259
+ IEnumSTATSTG * This,
260
+ ULONG celt,
261
+ STATSTG *rgelt,
262
+ ULONG *pceltFetched);
263
+
264
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
265
+ IEnumSTATSTG * This,
266
+ ULONG celt);
267
+
268
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
269
+ IEnumSTATSTG * This);
270
+
271
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
272
+ IEnumSTATSTG * This,
273
+ IEnumSTATSTG **ppenum);
274
+
275
+ END_INTERFACE
276
+ } IEnumSTATSTGVtbl;
277
+
278
+ interface IEnumSTATSTG
279
+ {
280
+ CONST_VTBL struct IEnumSTATSTGVtbl *lpVtbl;
281
+ };
282
+
283
+
284
+ /* IStorage */
285
+
286
+ typedef LPOLESTR *SNB;
287
+
288
+ typedef interface IStorage IStorage;
289
+ typedef struct IStorageVtbl
290
+ {
291
+ BEGIN_INTERFACE
292
+
293
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
294
+ IStorage * This,
295
+ REFIID riid,
296
+ _COM_Outptr_ void **ppvObject);
297
+
298
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
299
+ IStorage * This);
300
+
301
+ ULONG ( STDMETHODCALLTYPE *Release )(
302
+ IStorage * This);
303
+
304
+ HRESULT ( STDMETHODCALLTYPE *CreateStream )(
305
+ IStorage * This,
306
+ const OLECHAR *pwcsName,
307
+ DWORD grfMode,
308
+ DWORD reserved1,
309
+ DWORD reserved2,
310
+ IStream **ppstm);
311
+
312
+ HRESULT ( STDMETHODCALLTYPE *OpenStream )(
313
+ IStorage * This,
314
+ const OLECHAR *pwcsName,
315
+ void *reserved1,
316
+ DWORD grfMode,
317
+ DWORD reserved2,
318
+ IStream **ppstm);
319
+
320
+ HRESULT ( STDMETHODCALLTYPE *CreateStorage )(
321
+ IStorage * This,
322
+ /* [string][in] */ const OLECHAR *pwcsName,
323
+ /* [in] */ DWORD grfMode,
324
+ /* [in] */ DWORD reserved1,
325
+ /* [in] */ DWORD reserved2,
326
+ /* [out] */ IStorage **ppstg);
327
+
328
+ HRESULT ( STDMETHODCALLTYPE *OpenStorage )(
329
+ IStorage * This,
330
+ /* [string][unique][in] */ const OLECHAR *pwcsName,
331
+ /* [unique][in] */ IStorage *pstgPriority,
332
+ /* [in] */ DWORD grfMode,
333
+ /* [unique][in] */ SNB snbExclude,
334
+ /* [in] */ DWORD reserved,
335
+ /* [out] */ IStorage **ppstg);
336
+
337
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *CopyTo )(
338
+ IStorage * This,
339
+ /* [in] */ DWORD ciidExclude,
340
+ /* [annotation][size_is][unique][in] */
341
+ const IID *rgiidExclude,
342
+ /* [annotation][unique][in] */
343
+ SNB snbExclude,
344
+ /* [annotation][unique][in] */
345
+ IStorage *pstgDest);
346
+
347
+ HRESULT ( STDMETHODCALLTYPE *MoveElementTo )(
348
+ IStorage * This,
349
+ /* [string][in] */ const OLECHAR *pwcsName,
350
+ /* [unique][in] */ IStorage *pstgDest,
351
+ /* [string][in] */ const OLECHAR *pwcsNewName,
352
+ /* [in] */ DWORD grfFlags);
353
+
354
+ HRESULT ( STDMETHODCALLTYPE *Commit )(
355
+ IStorage * This,
356
+ /* [in] */ DWORD grfCommitFlags);
357
+
358
+ HRESULT ( STDMETHODCALLTYPE *Revert )(
359
+ IStorage * This);
360
+
361
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *EnumElements )(
362
+ IStorage * This,
363
+ /* [annotation][in] */
364
+ DWORD reserved1,
365
+ /* [annotation][size_is][unique][in] */
366
+ void *reserved2,
367
+ /* [annotation][in] */
368
+ DWORD reserved3,
369
+ /* [annotation][out] */
370
+ IEnumSTATSTG **ppenum);
371
+
372
+ HRESULT ( STDMETHODCALLTYPE *DestroyElement )(
373
+ IStorage * This,
374
+ /* [string][in] */ const OLECHAR *pwcsName);
375
+
376
+ HRESULT ( STDMETHODCALLTYPE *RenameElement )(
377
+ IStorage * This,
378
+ /* [string][in] */ const OLECHAR *pwcsOldName,
379
+ /* [string][in] */ const OLECHAR *pwcsNewName);
380
+
381
+ HRESULT ( STDMETHODCALLTYPE *SetElementTimes )(
382
+ IStorage * This,
383
+ /* [string][unique][in] */ const OLECHAR *pwcsName,
384
+ /* [unique][in] */ const FILETIME *pctime,
385
+ /* [unique][in] */ const FILETIME *patime,
386
+ /* [unique][in] */ const FILETIME *pmtime);
387
+
388
+ HRESULT ( STDMETHODCALLTYPE *SetClass )(
389
+ IStorage * This,
390
+ /* [in] */ REFCLSID clsid);
391
+
392
+ HRESULT ( STDMETHODCALLTYPE *SetStateBits )(
393
+ IStorage * This,
394
+ /* [in] */ DWORD grfStateBits,
395
+ /* [in] */ DWORD grfMask);
396
+
397
+ HRESULT ( STDMETHODCALLTYPE *Stat )(
398
+ IStorage * This,
399
+ /* [out] */ STATSTG *pstatstg,
400
+ /* [in] */ DWORD grfStatFlag);
401
+
402
+ END_INTERFACE
403
+ } IStorageVtbl;
404
+
405
+ interface IStorage
406
+ {
407
+ CONST_VTBL struct IStorageVtbl *lpVtbl;
408
+ };
409
+
410
+ typedef /* [unique] */ IStorage *LPSTORAGE;
411
+
412
+ typedef interface IRpcChannelBuffer IRpcChannelBuffer;
413
+ typedef struct IRpcChannelBufferVtbl
414
+ {
415
+ BEGIN_INTERFACE
416
+
417
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
418
+ IRpcChannelBuffer * This,
419
+ /* [in] */ REFIID riid,
420
+ /* [annotation][iid_is][out] */
421
+ _COM_Outptr_ void **ppvObject);
422
+
423
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
424
+ IRpcChannelBuffer * This);
425
+
426
+ ULONG ( STDMETHODCALLTYPE *Release )(
427
+ IRpcChannelBuffer * This);
428
+
429
+ HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
430
+ IRpcChannelBuffer * This,
431
+ /* [annotation][out][in] */
432
+ _Inout_ RPCOLEMESSAGE *pMessage,
433
+ /* [annotation][in] */
434
+ _In_ REFIID riid);
435
+
436
+ HRESULT ( STDMETHODCALLTYPE *SendReceive )(
437
+ IRpcChannelBuffer * This,
438
+ /* [annotation][out][in] */
439
+ _Inout_ RPCOLEMESSAGE *pMessage,
440
+ /* [annotation][out] */
441
+ _Out_opt_ ULONG *pStatus);
442
+
443
+ HRESULT ( STDMETHODCALLTYPE *FreeBuffer )(
444
+ IRpcChannelBuffer * This,
445
+ /* [annotation][out][in] */
446
+ _Inout_ RPCOLEMESSAGE *pMessage);
447
+
448
+ HRESULT ( STDMETHODCALLTYPE *GetDestCtx )(
449
+ IRpcChannelBuffer * This,
450
+ /* [annotation][out] */
451
+ _Out_ DWORD *pdwDestContext,
452
+ /* [annotation][out] */
453
+ void **ppvDestContext);
454
+
455
+ HRESULT ( STDMETHODCALLTYPE *IsConnected )(
456
+ IRpcChannelBuffer * This);
457
+
458
+ END_INTERFACE
459
+ } IRpcChannelBufferVtbl;
460
+
461
+ interface IRpcChannelBuffer
462
+ {
463
+ CONST_VTBL struct IRpcChannelBufferVtbl *lpVtbl;
464
+ };
465
+
466
+ typedef interface IRpcProxyBuffer IRpcProxyBuffer;
467
+ typedef struct IRpcProxyBufferVtbl
468
+ {
469
+ BEGIN_INTERFACE
470
+
471
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
472
+ IRpcProxyBuffer * This,
473
+ /* [in] */ REFIID riid,
474
+ /* [annotation][iid_is][out] */
475
+ _COM_Outptr_ void **ppvObject);
476
+
477
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
478
+ IRpcProxyBuffer * This);
479
+
480
+ ULONG ( STDMETHODCALLTYPE *Release )(
481
+ IRpcProxyBuffer * This);
482
+
483
+ HRESULT ( STDMETHODCALLTYPE *Connect )(
484
+ IRpcProxyBuffer * This,
485
+ /* [annotation][unique][in] */
486
+ _In_ IRpcChannelBuffer *pRpcChannelBuffer);
487
+
488
+ void ( STDMETHODCALLTYPE *Disconnect )(
489
+ IRpcProxyBuffer * This);
490
+
491
+ END_INTERFACE
492
+ } IRpcProxyBufferVtbl;
493
+
494
+ interface IRpcProxyBuffer
495
+ {
496
+ CONST_VTBL struct IRpcProxyBufferVtbl *lpVtbl;
497
+ };
498
+
499
+ typedef interface IRpcStubBuffer IRpcStubBuffer;
500
+ typedef struct IRpcStubBufferVtbl
501
+ {
502
+ BEGIN_INTERFACE
503
+
504
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
505
+ IRpcStubBuffer * This,
506
+ /* [in] */ REFIID riid,
507
+ /* [annotation][iid_is][out] */
508
+ _COM_Outptr_ void **ppvObject);
509
+
510
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
511
+ IRpcStubBuffer * This);
512
+
513
+ ULONG ( STDMETHODCALLTYPE *Release )(
514
+ IRpcStubBuffer * This);
515
+
516
+ HRESULT ( STDMETHODCALLTYPE *Connect )(
517
+ IRpcStubBuffer * This,
518
+ /* [annotation][in] */
519
+ _In_ IUnknown *pUnkServer);
520
+
521
+ void ( STDMETHODCALLTYPE *Disconnect )(
522
+ IRpcStubBuffer * This);
523
+
524
+ HRESULT ( STDMETHODCALLTYPE *Invoke )(
525
+ IRpcStubBuffer * This,
526
+ /* [annotation][out][in] */
527
+ _Inout_ RPCOLEMESSAGE *_prpcmsg,
528
+ /* [annotation][in] */
529
+ _In_ IRpcChannelBuffer *_pRpcChannelBuffer);
530
+
531
+ IRpcStubBuffer *( STDMETHODCALLTYPE *IsIIDSupported )(
532
+ IRpcStubBuffer * This,
533
+ /* [annotation][in] */
534
+ _In_ REFIID riid);
535
+
536
+ ULONG ( STDMETHODCALLTYPE *CountRefs )(
537
+ IRpcStubBuffer * This);
538
+
539
+ HRESULT ( STDMETHODCALLTYPE *DebugServerQueryInterface )(
540
+ IRpcStubBuffer * This,
541
+ /* [annotation][out] */
542
+ _Outptr_ void **ppv);
543
+
544
+ void ( STDMETHODCALLTYPE *DebugServerRelease )(
545
+ IRpcStubBuffer * This,
546
+ /* [annotation][in] */
547
+ _In_ void *pv);
548
+
549
+ END_INTERFACE
550
+ } IRpcStubBufferVtbl;
551
+
552
+ interface IRpcStubBuffer
553
+ {
554
+ CONST_VTBL struct IRpcStubBufferVtbl *lpVtbl;
555
+ };
556
+
557
+
558
+
559
+ typedef interface IPSFactoryBuffer IPSFactoryBuffer;
560
+ typedef struct IPSFactoryBufferVtbl
561
+ {
562
+ BEGIN_INTERFACE
563
+
564
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
565
+ IPSFactoryBuffer * This,
566
+ /* [in] */ REFIID riid,
567
+ /* [annotation][iid_is][out] */
568
+ _COM_Outptr_ void **ppvObject);
569
+
570
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
571
+ IPSFactoryBuffer * This);
572
+
573
+ ULONG ( STDMETHODCALLTYPE *Release )(
574
+ IPSFactoryBuffer * This);
575
+
576
+ HRESULT ( STDMETHODCALLTYPE *CreateProxy )(
577
+ IPSFactoryBuffer * This,
578
+ /* [annotation][in] */
579
+ _In_ IUnknown *pUnkOuter,
580
+ /* [annotation][in] */
581
+ _In_ REFIID riid,
582
+ /* [annotation][out] */
583
+ _Outptr_ IRpcProxyBuffer **ppProxy,
584
+ /* [annotation][out] */
585
+ _Outptr_ void **ppv);
586
+
587
+ HRESULT ( STDMETHODCALLTYPE *CreateStub )(
588
+ IPSFactoryBuffer * This,
589
+ /* [annotation][in] */
590
+ _In_ REFIID riid,
591
+ /* [annotation][unique][in] */
592
+ _In_opt_ IUnknown *pUnkServer,
593
+ /* [annotation][out] */
594
+ _Outptr_ IRpcStubBuffer **ppStub);
595
+
596
+ END_INTERFACE
597
+ } IPSFactoryBufferVtbl;
598
+
599
+ interface IPSFactoryBuffer
600
+ {
601
+ CONST_VTBL struct IPSFactoryBufferVtbl *lpVtbl;
602
+ };
603
+
604
+
605
+
606
+ typedef __int64 OXID;
607
+ typedef __int64 OID;
608
+ typedef GUID IPID;
609
+
610
+ typedef struct tagDUALSTRINGARRAY {
611
+ unsigned short wNumEntries;
612
+ unsigned short wSecurityOffset;
613
+ unsigned short aStringArray[ANYSIZE_ARRAY];
614
+ } DUALSTRINGARRAY;
615
+
616
+ typedef struct tagSTDOBJREF {
617
+ unsigned long flags;
618
+ unsigned long cPublicRefs;
619
+ OXID oxid;
620
+ OID oid;
621
+ IPID ipid;
622
+ } STDOBJREF;
623
+
624
+ typedef struct tagOBJREF {
625
+ unsigned long signature;
626
+ unsigned long flags;
627
+ GUID iid;
628
+ union {
629
+ struct {
630
+ STDOBJREF std;
631
+ DUALSTRINGARRAY saResAddr;
632
+ } u_standard;
633
+ struct {
634
+ STDOBJREF std;
635
+ CLSID clsid;
636
+ DUALSTRINGARRAY saResAddr;
637
+ } u_handler;
638
+ struct {
639
+ CLSID clsid;
640
+ unsigned long cbExtension;
641
+ unsigned long size;
642
+ BYTE *pData;
643
+ } u_custom;
644
+ } u_objref;
645
+ } OBJREF;