├── ALPC_Client
├── ALPC_Client.sdf
├── ALPC_Client.sln
├── ALPC_Client.v11.suo
├── ALPC_Client
│ ├── ALPC_Client.cpp
│ ├── ALPC_Client.vcxproj
│ ├── ALPC_Client.vcxproj.filters
│ ├── ReadMe.txt
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── targetver.h
│ └── x64
│ │ └── Release
│ │ ├── ALPC_Client.lastbuildstate
│ │ ├── ALPC_Client.log
│ │ ├── ALPC_Client.obj
│ │ ├── ALPC_Client.pch
│ │ ├── CL.read.1.tlog
│ │ ├── CL.write.1.tlog
│ │ ├── cl.command.1.tlog
│ │ ├── link-cvtres.read.1.tlog
│ │ ├── link-cvtres.write.1.tlog
│ │ ├── link-rc.read.1.tlog
│ │ ├── link-rc.write.1.tlog
│ │ ├── link.command.1.tlog
│ │ ├── link.read.1.tlog
│ │ ├── link.write.1.tlog
│ │ ├── stdafx.obj
│ │ └── vc110.pdb
├── ipch
│ └── alpc_client-a7fc5d46
│ │ └── alpc_client-d4ee72c2.ipch
└── x64
│ └── Release
│ ├── ALPC_Client.exe
│ └── ALPC_Client.pdb
├── ALPC_Server
├── ALPC_Server.sdf
├── ALPC_Server.sln
├── ALPC_Server.v11.suo
├── ALPC_Server
│ ├── ALPC_Server.cpp
│ ├── ALPC_Server.vcxproj
│ ├── ALPC_Server.vcxproj.filters
│ ├── ReadMe.txt
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── targetver.h
│ └── x64
│ │ └── Release
│ │ ├── ALPC_Server.lastbuildstate
│ │ ├── ALPC_Server.log
│ │ ├── ALPC_Server.obj
│ │ ├── ALPC_Server.pch
│ │ ├── CL.read.1.tlog
│ │ ├── CL.write.1.tlog
│ │ ├── cl.command.1.tlog
│ │ ├── link-cvtres.read.1.tlog
│ │ ├── link-cvtres.write.1.tlog
│ │ ├── link-rc.read.1.tlog
│ │ ├── link-rc.write.1.tlog
│ │ ├── link.command.1.tlog
│ │ ├── link.read.1.tlog
│ │ ├── link.write.1.tlog
│ │ ├── stdafx.obj
│ │ └── vc110.pdb
├── ipch
│ ├── alpc_server-5509908e
│ │ ├── alpc_server-3bfc53da.ipch
│ │ ├── alpc_server-9d888662.ipch
│ │ └── alpc_server-d9100f5c.ipch
│ └── alpc_server-d4682c93
│ │ └── alpc_server-3bfc53da.ipch
└── x64
│ └── Release
│ ├── ALPC_Server.exe
│ └── ALPC_Server.pdb
├── LICENSE
└── README.md
/ALPC_Client/ALPC_Client.sdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client.sdf
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2012
4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALPC_Client", "ALPC_Client\ALPC_Client.vcxproj", "{FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Win32 = Debug|Win32
9 | Debug|x64 = Debug|x64
10 | Release|Win32 = Release|Win32
11 | Release|x64 = Release|x64
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}.Debug|Win32.ActiveCfg = Debug|Win32
15 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}.Debug|Win32.Build.0 = Debug|Win32
16 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}.Debug|x64.ActiveCfg = Debug|x64
17 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}.Debug|x64.Build.0 = Debug|x64
18 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}.Release|Win32.ActiveCfg = Release|Win32
19 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}.Release|Win32.Build.0 = Release|Win32
20 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}.Release|x64.ActiveCfg = Release|x64
21 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}.Release|x64.Build.0 = Release|x64
22 | EndGlobalSection
23 | GlobalSection(SolutionProperties) = preSolution
24 | HideSolutionNode = FALSE
25 | EndGlobalSection
26 | EndGlobal
27 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client.v11.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client.v11.suo
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/ALPC_Client.cpp:
--------------------------------------------------------------------------------
1 | // ALPC_Client.cpp : Defines the entry point for the console application.
2 | //
3 |
4 |
5 |
6 |
7 | #include "stdafx.h"
8 | #include "windows.h"
9 | #include "stdio.h"
10 |
11 | #pragma comment(lib,"ntdll.lib")
12 |
13 | #define ulong unsigned long
14 | #define ulonglong unsigned long long
15 | #define ULONG unsigned long
16 | #define ULONGLONG unsigned long long
17 | #define ushort unsigned short
18 | #define USHORT unsigned short
19 |
20 | struct _UNICODE_STRING
21 | {
22 | unsigned short Length;
23 | unsigned short MaxLength;
24 | unsigned long Pad;
25 | wchar_t* Buffer;
26 | };
27 | typedef struct _OBJECT_ATTRIBUTES {
28 | ULONGLONG Length;
29 | HANDLE RootDirectory;
30 | _UNICODE_STRING* ObjectName;
31 | ULONGLONG Attributes;
32 | PVOID SecurityDescriptor;
33 | PVOID SecurityQualityOfService;
34 | } OBJECT_ATTRIBUTES;
35 |
36 |
37 |
38 |
39 | struct _ALPC_PORT_ATTRIBUTES
40 | {
41 | ulong Flags;
42 | _SECURITY_QUALITY_OF_SERVICE SecurityQos;
43 | ulonglong MaxMessageLength;
44 | ulonglong MemoryBandwidth;
45 | ulonglong MaxPoolUsage;
46 | ulonglong MaxSectionSize;
47 | ulonglong MaxViewSize;
48 | ulonglong MaxTotalSectionSize;
49 | ulong DupObjectTypes;
50 | ulong Reserved;
51 | };
52 |
53 | struct _CLIENT_ID
54 | {
55 | unsigned long long UniqueProcess;
56 | unsigned long long UniqueThread;
57 | };
58 | typedef struct _PORT_MESSAGE
59 | {
60 | union //at 0x0
61 | {
62 | unsigned long Length;
63 | struct
64 | {
65 | unsigned short DataLength;
66 | unsigned short TotalLength;
67 | }s1;
68 | }u1;
69 | union //at 0x4
70 | {
71 | unsigned long ZeroInit;
72 | struct
73 | {
74 | unsigned short Type;
75 | unsigned short DataInfoOffset;
76 | }s2;
77 | }u2;
78 | _CLIENT_ID ClientId;//at 0x8
79 | unsigned long MessageId;//at 0x18
80 | unsigned long Pad;//at 0x1C
81 | union //at 0x20
82 | {
83 | unsigned long long ClientViewSize;
84 | unsigned long CallbackId;
85 | }u3;
86 | }PORT_MESSAGE;
87 |
88 | struct _REMOTE_PORT_VIEW
89 | {
90 | unsigned long Length;
91 | unsigned long Pad;
92 | unsigned long long ViewSize;
93 | unsigned long long ViewBase;
94 | };
95 |
96 | typedef struct _PORT_VIEW
97 | {
98 | ULONG Length;
99 | ULONG Pad1;
100 | HANDLE SectionHandle;
101 | ULONG SectionOffset;
102 | ULONG Pad2;
103 | ULONGLONG ViewSize;
104 | ULONGLONG ViewBase;
105 | ULONGLONG ViewRemoteBase;
106 | }PORT_VIEW;
107 |
108 |
109 | typedef enum _LPC_TYPE{
110 | LPC_NEW_MESSAGE, // A new message
111 | LPC_REQUEST, // A request message
112 | LPC_REPLY, // A reply to a request message
113 | LPC_DATAGRAM, //
114 | LPC_LOST_REPLY, //
115 | LPC_PORT_CLOSED, // Sent when port is deleted
116 | LPC_CLIENT_DIED, // Messages to thread termination ports
117 | LPC_EXCEPTION, // Messages to thread exception port
118 | LPC_DEBUG_EVENT, // Messages to thread debug port
119 | LPC_ERROR_EVENT, // Used by ZwRaiseHardError
120 | LPC_CONNECTION_REQUEST // Used by ZwConnectPort
121 | }LPC_TYPE;
122 |
123 | struct _ALPC_MESSAGE_ATTRIBUTES
124 | {
125 | ulong AllocatedAttributes;
126 | ulong ValidAttributes;
127 | };
128 |
129 |
130 | extern "C"
131 | {
132 | int ZwCreateSection(HANDLE* SectionHandle,
133 | ACCESS_MASK DesiredAccess,
134 | _OBJECT_ATTRIBUTES* ObjectAttributes,
135 | _LARGE_INTEGER* MaximumSize,
136 | ulonglong SectionPageProtection,
137 | ulonglong AllocationAttributes,
138 | HANDLE FileHandle);
139 |
140 | int ZwCreatePort (HANDLE* pPortHandle,
141 | _OBJECT_ATTRIBUTES* ObjectAttributes,
142 | ulonglong MaxConnectInfoLength,
143 | ulonglong MaxDataLength,
144 | void* Reserved);
145 | int ZwAlpcCreatePort(HANDLE* pPortHandle, _OBJECT_ATTRIBUTES* ObjectAttributes, _ALPC_PORT_ATTRIBUTES* PortAttributes);
146 |
147 | int ZwReplyWaitReceivePort(HANDLE PortHandle,
148 | void** PortContext,
149 | _PORT_MESSAGE* ReplyMessage,
150 | _PORT_MESSAGE* ReceiveMessage);
151 |
152 | int ZwAcceptConnectPort
153 | (HANDLE* PortHandle,
154 | void* PortContext,
155 | _PORT_MESSAGE* ConnectionRequest,
156 | bool AcceptConnection,
157 | void* ServerView,
158 | _REMOTE_PORT_VIEW* ClientView);
159 |
160 | int ZwReplyPort(HANDLE PortHandle, _PORT_MESSAGE* ReplyMessage);
161 |
162 | int ZwConnectPort
163 | (HANDLE* PortHandle,
164 | _UNICODE_STRING* PortName,
165 | _SECURITY_QUALITY_OF_SERVICE* SecurityQos,
166 | _PORT_VIEW* ClientView,
167 |
168 | _REMOTE_PORT_VIEW* ServerView,
169 | ulonglong* MaxMessageLength,
170 | void* ConnectionInformation,
171 | ulonglong* ConnectionInformationLength);
172 | int ZwRequestWaitReplyPort
173 | (HANDLE PortHandle,
174 | _PORT_MESSAGE* RequestMessage,
175 | _PORT_MESSAGE* ReplyMessage);
176 |
177 | int ZwSecureConnectPort
178 | (HANDLE* PortHandle,
179 | _UNICODE_STRING* PortName,
180 | _SECURITY_QUALITY_OF_SERVICE* SecurityQos,
181 | _PORT_VIEW* ClientView,
182 | PSID RequiredServerSid,
183 | _REMOTE_PORT_VIEW ServerView,
184 | ulonglong* MaxMessageLength,
185 | void* ConnectionInformation,
186 | ulonglong* ConnectionInformationLength);
187 |
188 | int ZwRequestPort(HANDLE PortHandle, _PORT_MESSAGE* RequestMessage);
189 |
190 |
191 | int ZwAlpcConnectPort(HANDLE* PortHandle,
192 | _UNICODE_STRING* PortName,
193 | _OBJECT_ATTRIBUTES* ObjectAttributes,
194 | _ALPC_PORT_ATTRIBUTES* PortAttributes,
195 | ulonglong Flags,
196 | PSID RequiredServerSid,
197 | _PORT_MESSAGE* ConnectionMessage,
198 | ulonglong* BufferLength,
199 | _ALPC_MESSAGE_ATTRIBUTES* OutMessageAttributes,
200 | _ALPC_MESSAGE_ATTRIBUTES* InMessageAttributes,
201 | _LARGE_INTEGER* Timeout);
202 | }
203 |
204 |
205 |
206 |
207 | #define SECTION_EXTEND_SIZE 16
208 | #define SECTION_MAP_READ 4
209 | #define SECTION_MAP_WRITE 2
210 | #define SECTION_QUERY 1
211 | #define SECTION_ALL_ACCESS 0xf001f
212 |
213 |
214 | #define SEC_COMMIT 0x8000000
215 |
216 | int _tmainX(int argc, _TCHAR* argv[])
217 | {
218 | printf("Current PID: %I64X\r\n",GetCurrentProcessId());
219 | printf("Current TID: %I64X\r\n",GetCurrentThreadId());
220 |
221 | HANDLE hSection = 0;
222 | _OBJECT_ATTRIBUTES ObjAttr={sizeof(ObjAttr)};
223 |
224 | ulonglong MaxSize=0x400000;
225 |
226 |
227 | int retValue = ZwCreateSection(&hSection,
228 | SECTION_MAP_READ|SECTION_MAP_WRITE,
229 | 0 /*ObjAttr*/,
230 | (_LARGE_INTEGER*)(&MaxSize),
231 | PAGE_READWRITE,
232 | SEC_COMMIT,
233 | 0);
234 |
235 | printf("ZwCreateSection, ret: %X\r\n",retValue);
236 | printf("hSection: %I64X\r\n",hSection);
237 |
238 | wchar_t* PortName = L"\\BaseNamedObjects\\Local\\portw";
239 |
240 |
241 |
242 | _UNICODE_STRING UniS = {0};
243 | UniS.Length = wcslen(PortName)*2;
244 | UniS.MaxLength = (UniS.Length)+2;
245 | UniS.Buffer = PortName;
246 |
247 |
248 | HANDLE hPort_remote = 0;
249 |
250 | _PORT_VIEW PortView = {sizeof(_PORT_VIEW)};
251 | PortView.SectionHandle=hSection;
252 | PortView.ViewSize=MaxSize;
253 |
254 | _REMOTE_PORT_VIEW RemotePortView = {sizeof(_REMOTE_PORT_VIEW)};
255 |
256 | ulonglong MaxMsgLength = 0;
257 |
258 | ulonglong ConnInfoLength = 0x30;
259 | void* ConnInfo = LocalAlloc(LMEM_ZEROINIT,ConnInfoLength);
260 | memset(ConnInfo,0x61,ConnInfoLength);
261 |
262 | retValue = ZwConnectPort(&hPort_remote,&UniS,0,&PortView,&RemotePortView,&MaxMsgLength,ConnInfo,&ConnInfoLength);
263 | if(retValue < 0)
264 | {
265 | char* Err = 0;
266 | if(retValue == 0xC0000034)
267 | {
268 | Err = "STATUS_OBJECT_NAME_NOT_FOUND";
269 | }
270 | else if(retValue == 0xC0000041)
271 | {
272 | Err = "STATUS_PORT_CONNECTION_REFUSED";
273 | }
274 | printf ("Error creating ALPC port, ret: %X, %s\r\n",retValue,Err);
275 | return -5;
276 | }
277 |
278 | printf("hPort: %X\r\n",hPort_remote);
279 |
280 | ulong c = 0;
281 | ulonglong i =0;
282 | while(1)
283 | {
284 | ulonglong MaxDataLength = 0xC0;
285 | MaxDataLength -= sizeof(_PORT_MESSAGE);
286 |
287 | _PORT_MESSAGE* pReq = (_PORT_MESSAGE*)LocalAlloc(LMEM_ZEROINIT,sizeof(_PORT_MESSAGE)+MaxDataLength);
288 |
289 | pReq->u1.s1.DataLength = MaxDataLength;
290 | pReq->u1.s1.TotalLength = MaxDataLength + sizeof(_PORT_MESSAGE);
291 | pReq->MessageId = i++;
292 | pReq->ClientId.UniqueProcess = GetCurrentProcessId();
293 | pReq->ClientId.UniqueThread = GetCurrentThreadId();
294 | pReq->u2.s2.DataInfoOffset = 0;
295 |
296 | memset( ((char*)pReq)+sizeof(_PORT_MESSAGE),0x61+c,MaxDataLength-1);
297 | c++;
298 |
299 | printf("===Attempt\r\n");
300 | _PORT_MESSAGE Repl ={0};
301 | retValue = ZwRequestWaitReplyPort
302 | (hPort_remote,
303 | pReq,
304 | 0);
305 |
306 | if(retValue < 0)
307 | {
308 | printf("Error ZwRequestWaitReplyPort, ret: %X\r\n",retValue);
309 | return -7;
310 | }
311 | printf("===Done\r\n");
312 | Sleep(1000);
313 | }
314 | return 0;
315 |
316 | };
317 |
318 |
319 |
320 | //Send datagrams
321 | int _tmain_datagram(int argc, _TCHAR* argv[])
322 | {
323 | printf("Current PID: %I64X\r\n",GetCurrentProcessId());
324 | printf("Current TID: %I64X\r\n",GetCurrentThreadId());
325 |
326 |
327 | _OBJECT_ATTRIBUTES ObjAttr={sizeof(ObjAttr)};
328 | ObjAttr.Attributes = 0x40;
329 |
330 |
331 |
332 |
333 |
334 | wchar_t* PortName = L"\\BaseNamedObjects\\Local\\portw";
335 |
336 |
337 |
338 | _UNICODE_STRING UniS = {0};
339 | UniS.Length = wcslen(PortName)*2;
340 | UniS.MaxLength = (UniS.Length)+2;
341 | UniS.Buffer = PortName;
342 |
343 |
344 |
345 |
346 |
347 | HANDLE hPort_Remote = 0;
348 |
349 | _ALPC_PORT_ATTRIBUTES PortAtt = {0};
350 |
351 | int retValue = ZwAlpcConnectPort(&hPort_Remote,&UniS,&ObjAttr,0,0x20000 /*FLags*/,0,0,0,0,0,0);
352 | printf("ZwAlpcConnectPort, ret: %X\r\n",retValue);
353 | if(retValue < 0)
354 | {
355 | char* Err = 0;
356 | if(retValue == 0xC0000034)
357 | {
358 | Err = "STATUS_OBJECT_NAME_NOT_FOUND";
359 | }
360 | else if(retValue == 0xC0000041)
361 | {
362 | Err = "STATUS_PORT_CONNECTION_REFUSED";
363 | }
364 | printf ("Error creating ALPC port, ret: %X, %s\r\n",retValue,Err);
365 | return -5;
366 | }
367 |
368 |
369 | printf("hPort: %X\r\n",hPort_Remote);
370 |
371 |
372 | ulong c = 0;
373 | ulonglong i =0;
374 | while(1)
375 | {
376 | ulonglong TotalLength = 0x458;
377 |
378 | _PORT_MESSAGE* pReq = (_PORT_MESSAGE*)LocalAlloc(LMEM_ZEROINIT,TotalLength);
379 |
380 |
381 | ulonglong DataLength = TotalLength - sizeof(_PORT_MESSAGE);
382 |
383 |
384 |
385 |
386 | pReq->u1.s1.DataLength = 0;
387 | pReq->u1.s1.TotalLength = sizeof(_PORT_MESSAGE);
388 | //pReq->MessageId = i++;
389 | //pReq->ClientId.UniqueProcess = GetCurrentProcessId();
390 | //pReq->ClientId.UniqueThread = GetCurrentThreadId();
391 | pReq->u2.s2.DataInfoOffset = 0;
392 |
393 | //memset( ((char*)pReq)+sizeof(_PORT_MESSAGE),0x61+c,MaxDataLength-1);
394 | c++;
395 |
396 | printf("===Attempt\r\n");
397 |
398 | retValue = ZwRequestPort(hPort_Remote,pReq);
399 | printf("ZwRequestPort, ret: %X\r\n",retValue);
400 | if(retValue < 0)
401 | {
402 | printf("Error ZwRequestPort, ret: %X\r\n",retValue);
403 | return -7;
404 | }
405 | printf("===Done\r\n");
406 | Sleep(1000);
407 | }
408 |
409 | return 0;
410 |
411 | };
412 |
413 |
414 |
415 |
416 | int _tmain(int argc, _TCHAR* argv[])
417 | {
418 | printf("Current PID: %I64X\r\n",GetCurrentProcessId());
419 | printf("Current TID: %I64X\r\n",GetCurrentThreadId());
420 |
421 |
422 | _OBJECT_ATTRIBUTES ObjAttr={sizeof(ObjAttr)};
423 | ObjAttr.Attributes = 0x40;
424 |
425 |
426 |
427 |
428 |
429 | wchar_t* PortName = L"\\BaseNamedObjects\\Local\\portw";
430 |
431 |
432 |
433 | _UNICODE_STRING UniS = {0};
434 | UniS.Length = wcslen(PortName)*2;
435 | UniS.MaxLength = (UniS.Length)+2;
436 | UniS.Buffer = PortName;
437 |
438 |
439 |
440 |
441 |
442 | HANDLE hPort_Remote = 0;
443 |
444 | _ALPC_PORT_ATTRIBUTES PortAtt = {0};
445 |
446 | int retValue = ZwAlpcConnectPort(&hPort_Remote,&UniS,&ObjAttr,0,0x20000 /*FLags*/,0,0,0,0,0,0);
447 | printf("ZwAlpcConnectPort, ret: %X\r\n",retValue);
448 | if(retValue < 0)
449 | {
450 | char* Err = 0;
451 | if(retValue == 0xC0000034)
452 | {
453 | Err = "STATUS_OBJECT_NAME_NOT_FOUND";
454 | }
455 | else if(retValue == 0xC0000041)
456 | {
457 | Err = "STATUS_PORT_CONNECTION_REFUSED";
458 | }
459 | printf ("Error creating ALPC port, ret: %X, %s\r\n",retValue,Err);
460 | return -5;
461 | }
462 |
463 |
464 | printf("hPort: %X\r\n",hPort_Remote);
465 |
466 |
467 | ulong c = 0;
468 | ulonglong i = 0;
469 |
470 |
471 | #define MaxMsgLen 0x200
472 |
473 | while(1)
474 | {
475 |
476 |
477 | ulonglong TotalLength = MaxMsgLen;
478 | _PORT_MESSAGE* pReq = (_PORT_MESSAGE*)VirtualAlloc(0,TotalLength,MEM_COMMIT,PAGE_READWRITE);
479 | _PORT_MESSAGE* pRpl = (_PORT_MESSAGE*)VirtualAlloc(0,TotalLength,MEM_COMMIT,PAGE_READWRITE);
480 |
481 | //pReq->u2.s2.Type = LPC_REQUEST;
482 |
483 | pReq->u1.s1.DataLength = TotalLength - sizeof(_PORT_MESSAGE);
484 | pReq->u1.s1.TotalLength = TotalLength;
485 | pReq->MessageId = 0;
486 | //pReq->ClientId.UniqueProcess = GetCurrentProcessId();
487 | //pReq->ClientId.UniqueThread = GetCurrentThreadId();
488 | pReq->u2.s2.DataInfoOffset = 0 ;
489 |
490 | memset( ((char*)pReq)+sizeof(_PORT_MESSAGE)+(pReq->u2.s2.DataInfoOffset),
491 | 0x61+c,
492 | TotalLength - sizeof(_PORT_MESSAGE)-1);
493 |
494 |
495 | c++;
496 |
497 | printf("===Attempt\r\n");
498 |
499 | retValue = ZwRequestWaitReplyPort(hPort_Remote,pReq,pRpl);
500 | printf("ZwRequestWaitReplyPort, ret: %X\r\n",retValue);
501 | if(retValue < 0)
502 | {
503 | printf("Error ZwRequestWaitReplyPort, ret: %X\r\n",retValue);
504 | return -7;
505 | }
506 | printf("===Done\r\n");
507 |
508 | VirtualFree(pReq,0,MEM_RELEASE);
509 | Sleep(1000);
510 | }
511 |
512 | return 0;
513 |
514 | };
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/ALPC_Client.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Debug
10 | x64
11 |
12 |
13 | Release
14 | Win32
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 |
22 | {FAFEC4F6-FF8E-412D-9C51-D6169556F7FA}
23 | Win32Proj
24 | ALPC_Client
25 |
26 |
27 |
28 | Application
29 | true
30 | v110
31 | Unicode
32 |
33 |
34 | Application
35 | true
36 | v110
37 | Unicode
38 |
39 |
40 | Application
41 | false
42 | v110
43 | true
44 | Unicode
45 |
46 |
47 | Application
48 | false
49 | v110
50 | true
51 | Unicode
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | true
71 |
72 |
73 | true
74 |
75 |
76 | false
77 |
78 |
79 | false
80 |
81 |
82 |
83 | Use
84 | Level3
85 | Disabled
86 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
87 |
88 |
89 | Console
90 | true
91 |
92 |
93 |
94 |
95 | Use
96 | Level3
97 | Disabled
98 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
99 |
100 |
101 | Console
102 | true
103 |
104 |
105 |
106 |
107 | Level3
108 | Use
109 | MaxSpeed
110 | true
111 | true
112 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
113 |
114 |
115 | Console
116 | true
117 | true
118 | true
119 |
120 |
121 |
122 |
123 | Level3
124 | Use
125 | MaxSpeed
126 | true
127 | true
128 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
129 |
130 |
131 | Console
132 | true
133 | true
134 | true
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 | Create
148 | Create
149 | Create
150 | Create
151 |
152 |
153 |
154 |
155 |
156 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/ALPC_Client.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Header Files
23 |
24 |
25 | Header Files
26 |
27 |
28 |
29 |
30 | Source Files
31 |
32 |
33 | Source Files
34 |
35 |
36 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/ReadMe.txt:
--------------------------------------------------------------------------------
1 | ========================================================================
2 | CONSOLE APPLICATION : ALPC_Client Project Overview
3 | ========================================================================
4 |
5 | AppWizard has created this ALPC_Client application for you.
6 |
7 | This file contains a summary of what you will find in each of the files that
8 | make up your ALPC_Client application.
9 |
10 |
11 | ALPC_Client.vcxproj
12 | This is the main project file for VC++ projects generated using an Application Wizard.
13 | It contains information about the version of Visual C++ that generated the file, and
14 | information about the platforms, configurations, and project features selected with the
15 | Application Wizard.
16 |
17 | ALPC_Client.vcxproj.filters
18 | This is the filters file for VC++ projects generated using an Application Wizard.
19 | It contains information about the association between the files in your project
20 | and the filters. This association is used in the IDE to show grouping of files with
21 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the
22 | "Source Files" filter).
23 |
24 | ALPC_Client.cpp
25 | This is the main application source file.
26 |
27 | /////////////////////////////////////////////////////////////////////////////
28 | Other standard files:
29 |
30 | StdAfx.h, StdAfx.cpp
31 | These files are used to build a precompiled header (PCH) file
32 | named ALPC_Client.pch and a precompiled types file named StdAfx.obj.
33 |
34 | /////////////////////////////////////////////////////////////////////////////
35 | Other notes:
36 |
37 | AppWizard uses "TODO:" comments to indicate parts of the source code you
38 | should add to or customize.
39 |
40 | /////////////////////////////////////////////////////////////////////////////
41 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/stdafx.cpp:
--------------------------------------------------------------------------------
1 | // stdafx.cpp : source file that includes just the standard includes
2 | // ALPC_Client.pch will be the pre-compiled header
3 | // stdafx.obj will contain the pre-compiled type information
4 |
5 | #include "stdafx.h"
6 |
7 | // TODO: reference any additional headers you need in STDAFX.H
8 | // and not in this file
9 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/stdafx.h:
--------------------------------------------------------------------------------
1 | // stdafx.h : include file for standard system include files,
2 | // or project specific include files that are used frequently, but
3 | // are changed infrequently
4 | //
5 |
6 | #pragma once
7 |
8 | #include "targetver.h"
9 |
10 | #include
11 | #include
12 |
13 |
14 |
15 | // TODO: reference additional headers your program requires here
16 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/ALPC_Client.lastbuildstate:
--------------------------------------------------------------------------------
1 | #v4.0:v110:false
2 | Release|x64|C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Client\|
3 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/ALPC_Client.log:
--------------------------------------------------------------------------------
1 | Build started 9/4/2019 8:07:10 PM.
2 | 1>Project "C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Client\ALPC_Client\ALPC_Client.vcxproj" on node 2 (Build target(s)).
3 | 1>ClCompile:
4 | C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64\CL.exe /c /Zi /nologo /W3 /WX- /O2 /Oi /GL /D WIN32 /D NDEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Yu"stdafx.h" /Fp"x64\Release\ALPC_Client.pch" /Fo"x64\Release\\" /Fd"x64\Release\vc110.pdb" /Gd /TP /errorReport:prompt ALPC_Client.cpp
5 | ALPC_Client.cpp
6 | 1>ALPC_Client.cpp(207): warning C4005: 'SECTION_EXTEND_SIZE' : macro redefinition
7 | C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(11501) : see previous definition of 'SECTION_EXTEND_SIZE'
8 | 1>ALPC_Client.cpp(208): warning C4005: 'SECTION_MAP_READ' : macro redefinition
9 | C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(11499) : see previous definition of 'SECTION_MAP_READ'
10 | 1>ALPC_Client.cpp(209): warning C4005: 'SECTION_MAP_WRITE' : macro redefinition
11 | C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(11498) : see previous definition of 'SECTION_MAP_WRITE'
12 | 1>ALPC_Client.cpp(210): warning C4005: 'SECTION_QUERY' : macro redefinition
13 | C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(11497) : see previous definition of 'SECTION_QUERY'
14 | 1>ALPC_Client.cpp(211): warning C4005: 'SECTION_ALL_ACCESS' : macro redefinition
15 | C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(11508) : see previous definition of 'SECTION_ALL_ACCESS'
16 | 1>ALPC_Client.cpp(243): warning C4267: '=' : conversion from 'size_t' to 'unsigned short', possible loss of data
17 | 1>ALPC_Client.cpp(289): warning C4244: '=' : conversion from 'unsigned __int64' to 'unsigned short', possible loss of data
18 | 1>ALPC_Client.cpp(290): warning C4244: '=' : conversion from 'unsigned __int64' to 'unsigned short', possible loss of data
19 | 1>ALPC_Client.cpp(291): warning C4244: '=' : conversion from 'unsigned __int64' to 'unsigned long', possible loss of data
20 | 1>ALPC_Client.cpp(339): warning C4267: '=' : conversion from 'size_t' to 'unsigned short', possible loss of data
21 | 1>ALPC_Client.cpp(434): warning C4267: '=' : conversion from 'size_t' to 'unsigned short', possible loss of data
22 | 1>ALPC_Client.cpp(483): warning C4244: '=' : conversion from 'unsigned __int64' to 'unsigned short', possible loss of data
23 | 1>ALPC_Client.cpp(484): warning C4244: '=' : conversion from 'unsigned __int64' to 'unsigned short', possible loss of data
24 | Link:
25 | C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Client\x64\Release\ALPC_Client.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Client\x64\Release\ALPC_Client.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Client\x64\Release\ALPC_Client.lib" /MACHINE:X64 x64\Release\ALPC_Client.obj
26 | x64\Release\stdafx.obj
27 | Generating code
28 | Finished generating code
29 | ALPC_Client.vcxproj -> C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Client\x64\Release\ALPC_Client.exe
30 | 1>Done Building Project "C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Client\ALPC_Client\ALPC_Client.vcxproj" (Build target(s)).
31 |
32 | Build succeeded.
33 |
34 | Time Elapsed 00:00:01.64
35 |
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/ALPC_Client.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/ALPC_Client.obj
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/ALPC_Client.pch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/ALPC_Client.pch
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/CL.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/CL.read.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/CL.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/CL.write.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/cl.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/cl.command.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/link-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/link-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/link-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/link-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/link-rc.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/link-rc.read.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/link-rc.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/link-rc.write.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/link.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/link.command.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/link.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/link.read.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/link.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/link.write.1.tlog
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/stdafx.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/stdafx.obj
--------------------------------------------------------------------------------
/ALPC_Client/ALPC_Client/x64/Release/vc110.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ALPC_Client/x64/Release/vc110.pdb
--------------------------------------------------------------------------------
/ALPC_Client/ipch/alpc_client-a7fc5d46/alpc_client-d4ee72c2.ipch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/ipch/alpc_client-a7fc5d46/alpc_client-d4ee72c2.ipch
--------------------------------------------------------------------------------
/ALPC_Client/x64/Release/ALPC_Client.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/x64/Release/ALPC_Client.exe
--------------------------------------------------------------------------------
/ALPC_Client/x64/Release/ALPC_Client.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Client/x64/Release/ALPC_Client.pdb
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server.sdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server.sdf
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2012
4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALPC_Server", "ALPC_Server\ALPC_Server.vcxproj", "{1BD5CFAD-ECE8-4192-A68A-24934EC4B445}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Win32 = Debug|Win32
9 | Debug|x64 = Debug|x64
10 | Release|Win32 = Release|Win32
11 | Release|x64 = Release|x64
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}.Debug|Win32.ActiveCfg = Debug|Win32
15 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}.Debug|Win32.Build.0 = Debug|Win32
16 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}.Debug|x64.ActiveCfg = Debug|x64
17 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}.Debug|x64.Build.0 = Debug|x64
18 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}.Release|Win32.ActiveCfg = Release|Win32
19 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}.Release|Win32.Build.0 = Release|Win32
20 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}.Release|x64.ActiveCfg = Release|x64
21 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}.Release|x64.Build.0 = Release|x64
22 | EndGlobalSection
23 | GlobalSection(SolutionProperties) = preSolution
24 | HideSolutionNode = FALSE
25 | EndGlobalSection
26 | EndGlobal
27 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server.v11.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server.v11.suo
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/ALPC_Server.cpp:
--------------------------------------------------------------------------------
1 | // ALPC_Server.cpp : Defines the entry point for the console application.
2 | //
3 |
4 |
5 | #include "stdafx.h"
6 | #include "windows.h"
7 | #include "stdio.h"
8 |
9 | #pragma comment(lib,"ntdll.lib")
10 |
11 | #define ulong unsigned long
12 | #define ulonglong unsigned long long
13 | #define ULONG unsigned long
14 | #define ULONGLONG unsigned long long
15 | #define ushort unsigned short
16 | #define USHORT unsigned short
17 |
18 | typedef enum _LPC_TYPE{
19 | LPC_NEW_MESSAGE, // A new message
20 | LPC_REQUEST, // A request message
21 | LPC_REPLY, // A reply to a request message
22 | LPC_DATAGRAM, //
23 | LPC_LOST_REPLY, //
24 | LPC_PORT_CLOSED, // Sent when port is deleted
25 | LPC_CLIENT_DIED, // Messages to thread termination ports
26 | LPC_EXCEPTION, // Messages to thread exception port
27 | LPC_DEBUG_EVENT, // Messages to thread debug port
28 | LPC_ERROR_EVENT, // Used by ZwRaiseHardError
29 | LPC_CONNECTION_REQUEST // Used by ZwConnectPort
30 | }LPC_TYPE;
31 |
32 |
33 |
34 | struct _UNICODE_STRING
35 | {
36 | unsigned short Length;
37 | unsigned short MaxLength;
38 | unsigned long Pad;
39 | wchar_t* Buffer;
40 | };
41 | typedef struct _OBJECT_ATTRIBUTES {
42 | ULONGLONG Length;
43 | HANDLE RootDirectory;
44 | _UNICODE_STRING* ObjectName;
45 | ULONGLONG Attributes;
46 | PVOID SecurityDescriptor;
47 | PVOID SecurityQualityOfService;
48 | } OBJECT_ATTRIBUTES;
49 |
50 |
51 |
52 |
53 | struct _ALPC_PORT_ATTRIBUTES
54 | {
55 | ulong Flags;
56 | _SECURITY_QUALITY_OF_SERVICE SecurityQos;
57 | ulonglong MaxMessageLength;
58 | ulonglong MemoryBandwidth;
59 | ulonglong MaxPoolUsage;
60 | ulonglong MaxSectionSize;
61 | ulonglong MaxViewSize;
62 | ulonglong MaxTotalSectionSize;
63 | ulong DupObjectTypes;
64 | ulong Reserved;
65 | };
66 |
67 | struct _CLIENT_ID
68 | {
69 | unsigned long long UniqueProcess;
70 | unsigned long long UniqueThread;
71 | };
72 | typedef struct _PORT_MESSAGE
73 | {
74 | union //at 0x0
75 | {
76 | unsigned long Length;
77 | struct
78 | {
79 | unsigned short DataLength;
80 | unsigned short TotalLength;
81 | }s1;
82 | }u1;
83 | union //at 0x4
84 | {
85 | unsigned long ZeroInit;
86 | struct
87 | {
88 | unsigned short Type;
89 | unsigned short DataInfoOffset;
90 | }s2;
91 | }u2;
92 | _CLIENT_ID ClientId;//at 0x8
93 | unsigned long MessageId;//at 0x18
94 | unsigned long Pad;//at 0x1C
95 | union //at 0x20
96 | {
97 | unsigned long long ClientViewSize;
98 | unsigned long CallbackId;
99 | }u3;
100 | }PORT_MESSAGE;
101 |
102 | struct _REMOTE_PORT_VIEW
103 | {
104 | unsigned long Length;
105 | unsigned long Pad;
106 | unsigned long long ViewSize;
107 | unsigned long long ViewBase;
108 | };
109 |
110 | typedef struct _PORT_VIEW
111 | {
112 | ULONG Length;
113 | ULONG Pad1;
114 | HANDLE SectionHandle;
115 | ULONG SectionOffset;
116 | ULONG Pad2;
117 | ULONGLONG ViewSize;
118 | ULONGLONG ViewBase;
119 | ULONGLONG ViewRemoteBase;
120 | }PORT_VIEW;
121 |
122 |
123 | struct _ALPC_MESSAGE_ATTRIBUTES
124 | {
125 | ulong AllocatedAttributes;
126 | ulong ValidAttributes;
127 | };
128 |
129 |
130 | //Taken from conhost.exe
131 | struct _CONTEXT_X
132 | {
133 | _LIST_ENTRY List0;//AT 0x0
134 | HANDLE hRemoteProcess;//at 0x10
135 | ulong Unk;//At 0x18
136 | ulong unkx;//at 0x1C
137 | _CLIENT_ID ClientId;//at 0x20
138 | ulonglong Pad0;//at 0x30
139 | ulonglong Pad1;//at 0x38
140 | _LIST_ENTRY List1;//at 0x40
141 | };
142 |
143 | extern "C"
144 | {
145 |
146 | int ZwClose(HANDLE Handle);
147 |
148 | int AlpcInitializeMessageAttribute (ulonglong AttributeFlags,
149 | _ALPC_MESSAGE_ATTRIBUTES* Buffer,
150 | ulonglong BufferSize,
151 | ulonglong* RequiredBufferSize);
152 |
153 | ulonglong AlpcGetMessageAttribute (_ALPC_MESSAGE_ATTRIBUTES* Buffer, ulonglong AttributeFlag);
154 |
155 |
156 | int ZwCreatePort (HANDLE* pPortHandle,
157 | _OBJECT_ATTRIBUTES* ObjectAttributes,
158 | ulonglong MaxConnectInfoLength,
159 | ulonglong MaxDataLength,
160 |
161 | void* Reserved);
162 | int ZwAlpcCreatePort(HANDLE* pPortHandle, _OBJECT_ATTRIBUTES* ObjectAttributes, _ALPC_PORT_ATTRIBUTES* PortAttributes);
163 |
164 | int ZwReplyWaitReceivePort(HANDLE PortHandle,
165 | void** PortContext,
166 | _PORT_MESSAGE* ReplyMessage,
167 | _PORT_MESSAGE* ReceiveMessage);
168 |
169 | int ZwAcceptConnectPort
170 | (HANDLE* PortHandle,
171 | void* PortContext,
172 | _PORT_MESSAGE* ConnectionRequest,
173 | bool AcceptConnection,
174 | void* ServerView,
175 | _REMOTE_PORT_VIEW* ClientView);
176 |
177 |
178 | int ZwReplyPort(HANDLE PortHandle, _PORT_MESSAGE* ReplyMessage);
179 |
180 | int ZwRequestWaitReplyPort
181 | (HANDLE PortHandle,
182 | _PORT_MESSAGE* RequestMessage,
183 | _PORT_MESSAGE* ReplyMessage);
184 | int ZwOpenProcess
185 | (HANDLE* ProcessHandle,
186 | ACCESS_MASK DesiredAccess,
187 | _OBJECT_ATTRIBUTES* ObjectAttributes,
188 | _CLIENT_ID* ClientId);
189 |
190 | int ZwAlpcOpenSenderProcess( HANDLE* ProcessHandle,
191 | HANDLE PortHandle,
192 | _PORT_MESSAGE* PortMessage,
193 | ulonglong Flags,
194 | ACCESS_MASK DesiredAccess,
195 | _OBJECT_ATTRIBUTES* ObjectAttributes );
196 |
197 | int ZwAlpcOpenSenderThread( HANDLE* ThreadHandle,
198 | HANDLE PortHandle,
199 | _PORT_MESSAGE* PortMessage,
200 | ulonglong Flags,
201 | ACCESS_MASK DesiredAccess,
202 | _OBJECT_ATTRIBUTES* ObjectAttributes );
203 |
204 | int ZwListenPort(HANDLE PortHandle, _PORT_MESSAGE* ConnectionRequest);
205 | int ZwReplyPort(HANDLE PortHandle, _PORT_MESSAGE* ReplyMessage);
206 |
207 | int ZwAlpcSendWaitReceivePort(HANDLE PortHandle, ulonglong Flags,
208 | _PORT_MESSAGE* SendMessage, _ALPC_MESSAGE_ATTRIBUTES* SendMessageAttributes,
209 | _PORT_MESSAGE* ReceiveMessage, ulonglong* BufferLength,
210 | _ALPC_MESSAGE_ATTRIBUTES* ReceiveMessageAttributes,_LARGE_INTEGER* Timeout);
211 |
212 | int ZwAlpcAcceptConnectPort(HANDLE* PortHandle,
213 | HANDLE ConnectionPortHandle,
214 | ulonglong Flags,
215 | _OBJECT_ATTRIBUTES* ObjectAttributes,
216 | _ALPC_PORT_ATTRIBUTES* PortAttributes,
217 | void* PortContext,
218 | _PORT_MESSAGE* ConnectionRequest,
219 | _ALPC_MESSAGE_ATTRIBUTES* ConnectionMessageAttributes,
220 | bool AcceptConnection);
221 | }
222 |
223 |
224 | #define MaxMsgLen 0x458
225 |
226 | int _tmain(int argc, _TCHAR* argv[])
227 | {
228 | HANDLE hPort = 0;
229 |
230 | wchar_t* PortName = L"\\BaseNamedObjects\\portw";
231 |
232 |
233 |
234 | _UNICODE_STRING UniS = {0};
235 | UniS.Length = wcslen(PortName)*2;
236 | UniS.MaxLength = (UniS.Length)+2;
237 | UniS.Buffer = PortName;
238 |
239 | _OBJECT_ATTRIBUTES ObjAttr = {sizeof(ObjAttr)};
240 | ObjAttr.Attributes=0x40;//insensitive
241 | ObjAttr.ObjectName=&UniS;
242 | //ObjAttr.RootDirectory=0;
243 |
244 | _ALPC_PORT_ATTRIBUTES PortAtt = {0};
245 | PortAtt.Flags = 0x20000;
246 | PortAtt.MaxMessageLength = MaxMsgLen;
247 | PortAtt.MemoryBandwidth = 0;
248 | PortAtt.MaxPoolUsage = 0x11600;
249 |
250 | int retValue = ZwAlpcCreatePort(&hPort,&ObjAttr,&PortAtt);
251 | if(retValue < 0)
252 | {
253 | printf ("Error creating ALPC port, ret: %X\r\n",retValue);
254 | return -5;
255 | }
256 | printf("hPort: %X\r\n",hPort);
257 | //--------------------
258 | bool bFirst = true;
259 | _PORT_MESSAGE* pReceiveMessage = 0;
260 | while(1)
261 | {
262 | _ALPC_MESSAGE_ATTRIBUTES* pReceiveMsgAttributes =
263 | (_ALPC_MESSAGE_ATTRIBUTES*)LocalAlloc(LMEM_ZEROINIT,0x78);
264 | ulonglong ReqLength = 0;
265 |
266 | int retYY = AlpcInitializeMessageAttribute(0x30000001,pReceiveMsgAttributes,0x78,&ReqLength);
267 | if(retYY < 0)
268 | {
269 | printf("AlpcInitializeMessageAttribute, ret: %X\r\n",retYY);
270 | ExitProcess(0);
271 | }
272 |
273 | ulonglong BufferLength = 0x458;
274 |
275 | if(bFirst)
276 | {
277 |
278 | pReceiveMessage = (_PORT_MESSAGE*)VirtualAlloc(0,BufferLength,MEM_COMMIT,PAGE_READWRITE);
279 | bFirst = false;
280 | }
281 |
282 |
283 |
284 |
285 | retValue = ZwAlpcSendWaitReceivePort(hPort, 0 /*Flags*/,
286 | 0,0,
287 | pReceiveMessage,&BufferLength,
288 | pReceiveMsgAttributes,0 /* TimeOut */);
289 |
290 | printf("ZwAlpcSendWaitReceivePort, ret: %X\r\n",retValue);
291 |
292 |
293 | ulonglong AttX = AlpcGetMessageAttribute(pReceiveMsgAttributes,0x20000000);
294 |
295 |
296 | if(retValue >= 0)
297 | {
298 | if(retValue == 0x102)//STATUS_TIMEOUT
299 | {
300 | printf("Timeout\r\n");
301 | ExitProcess(0);
302 | }
303 | else
304 | {
305 | AttX = AlpcGetMessageAttribute(pReceiveMsgAttributes,0x10000000);
306 |
307 | HANDLE hShit =(HANDLE) ( *(ulonglong*)(AttX+0x8) );
308 |
309 | ulong Typ = (pReceiveMessage->u2.s2.Type) & 0xFF;
310 | printf("Type: %X\r\n",Typ);
311 | if(Typ == 0xA)//LPC_CONNECTION_REQUEST
312 | {
313 | printf("New Connection\r\n");
314 | HANDLE hPort_Remote = 0;
315 |
316 |
317 | retValue = ZwAlpcAcceptConnectPort(&hPort_Remote,hPort,0,0,0,0,pReceiveMessage,0,true);
318 | printf("ZwAlpcAcceptConnectPort, ret: %X, hPort_Remote: %I64X\r\n",retValue,hPort_Remote);
319 |
320 | }
321 | else if(Typ == 1)//LPC_REQUEST
322 | {
323 | printf("New Request\r\n");
324 | _OBJECT_ATTRIBUTES ObjAtt_SenderP={sizeof(_OBJECT_ATTRIBUTES)};
325 | _OBJECT_ATTRIBUTES ObjAtt_SenderT={sizeof(_OBJECT_ATTRIBUTES)};
326 |
327 | //HANDLE hProcess = 0, hThread = 0;
328 | //retValue = ZwAlpcOpenSenderProcess(&hProcess,hPort,pReceiveMessage,0 /* Flags */,0x400 /*Desired */,&ObjAtt_SenderP);
329 | //printf("ZwAlpcOpenSenderProcess, ret: %X, hProcess: %I64X\r\n",retValue,hProcess);
330 |
331 |
332 | //retValue = ZwAlpcOpenSenderThread(&hThread,hPort,pReceiveMessage,0 /* Flags */,0,&ObjAtt_SenderT);
333 | //printf("ZwAlpcOpenSenderThread, ret: %X, hThread: %I64X\r\n",retValue,hThread);
334 |
335 | ulong Offset = pReceiveMessage->u2.s2.DataInfoOffset;
336 | char* pData = ((char*)pReceiveMessage) + sizeof(_PORT_MESSAGE) + Offset;
337 | printf("Data: %s\r\n",pData);
338 |
339 | ulonglong BufferLengthX = 0x458;
340 | _PORT_MESSAGE* pSendMessage = (_PORT_MESSAGE*)VirtualAlloc(0,BufferLengthX,MEM_COMMIT,PAGE_READWRITE);
341 | memcpy(pSendMessage,pReceiveMessage,BufferLengthX);
342 |
343 |
344 | retValue = ZwAlpcSendWaitReceivePort(hPort,0x10000 /*Flags*/,pSendMessage,0,0,0,0,0);
345 |
346 | }
347 | else if(Typ == LPC_DATAGRAM)//from ZwRequestPort
348 | {
349 |
350 | }
351 | }
352 | }
353 | else
354 | {
355 | printf("Closing port, bye\r\n");
356 | ZwClose(hPort);
357 | ExitProcess(0);
358 | }
359 |
360 |
361 |
362 |
363 | }
364 | VirtualFree(pReceiveMessage,0,MEM_RELEASE);
365 | return 0;
366 | }
367 |
368 |
369 |
370 |
371 | int _tmainX(int argc, _TCHAR* argv[])
372 | {
373 | printf("%X\r\n",sizeof(_PORT_MESSAGE));
374 | HANDLE hPort = 0;
375 |
376 |
377 |
378 | wchar_t* PortName = L"\\BaseNamedObjects\\portw";
379 |
380 |
381 |
382 | _UNICODE_STRING UniS = {0};
383 | UniS.Length = wcslen(PortName)*2;
384 | UniS.MaxLength = (UniS.Length)+2;
385 | UniS.Buffer = PortName;
386 |
387 | _OBJECT_ATTRIBUTES ObjAttr = {sizeof(ObjAttr)};
388 | ObjAttr.Attributes=0x40;//insensitive
389 | ObjAttr.ObjectName=&UniS;
390 | //ObjAttr.RootDirectory=0;
391 |
392 | ulonglong MaxConnectInfoLength = 0;
393 | ulonglong MaxDataLength = 0xC0;
394 | int retValue = ZwCreatePort(&hPort,&ObjAttr,MaxConnectInfoLength,MaxDataLength,0 /*Reserved*/);
395 | if(retValue < 0)
396 | {
397 | printf ("Error creating ALPC port, ret: %X\r\n",retValue);
398 | return -5;
399 | }
400 |
401 | printf("hPort: %X\r\n",hPort);
402 |
403 |
404 | void* PortContext = 0;
405 | _PORT_MESSAGE ReceiveMsg = {0};
406 |
407 | //blocking call
408 | retValue = ZwReplyWaitReceivePort
409 | (hPort,
410 | &PortContext,
411 | 0,
412 | &ReceiveMsg );
413 |
414 | printf("ZwReplyWaitReceivePort, ret: %X\r\n",retValue);
415 | //Check ReceiveMsg.u2.s2.Type
416 | unsigned short Typ = ReceiveMsg.u2.s2.Type;
417 | unsigned long TotalLength = ReceiveMsg.u1.s1.TotalLength;
418 | unsigned long DataLength = ReceiveMsg.u1.s1.DataLength;
419 | unsigned long DataInfoOffset = ReceiveMsg.u2.s2.DataInfoOffset;
420 |
421 |
422 |
423 | ulonglong PID = ReceiveMsg.ClientId.UniqueProcess;
424 | ulonglong TID = ReceiveMsg.ClientId.UniqueThread;
425 |
426 | printf("Type: %X\r\n",Typ);
427 | printf("TotalLength: %X\r\n",TotalLength);
428 | printf("DataLength: %X\r\n",DataLength);
429 | printf("DataInfoOffset: %X\r\n",DataInfoOffset);
430 | printf("PID: %I64X\r\n",ReceiveMsg.ClientId.UniqueProcess);
431 | printf("TID: %I64X\r\n",ReceiveMsg.ClientId.UniqueThread);
432 | printf("MsgId: %X\r\n",ReceiveMsg.MessageId);
433 | printf("ClientViewSize: %I64X\r\n",ReceiveMsg.u3.ClientViewSize);
434 |
435 |
436 | unsigned long Offset = (TotalLength - DataLength) + DataInfoOffset;
437 |
438 | void* pData = ((char*)(&ReceiveMsg))+Offset;
439 | printf("Data: %s\r\n",(char*)pData);
440 |
441 |
442 | HANDLE hPort_remote = 0;
443 | if(Typ == LPC_CONNECTION_REQUEST)
444 | {
445 | //Accept
446 |
447 |
448 |
449 |
450 |
451 |
452 | _CONTEXT_X* pContext = (_CONTEXT_X*)LocalAlloc(LMEM_ZEROINIT,sizeof(_CONTEXT_X));
453 | pContext->ClientId.UniqueProcess = ReceiveMsg.ClientId.UniqueProcess;
454 | pContext->ClientId.UniqueThread = ReceiveMsg.ClientId.UniqueThread;
455 |
456 |
457 | pContext->List1.Flink = &pContext->List1;
458 | pContext->List1.Blink = &pContext->List1;
459 |
460 | /*_LIST_ENTRY_* pEn = (_LIST_ENTRY_*)(pContext+0x40);
461 | pEn->FLink = pEn;
462 | pEn->BLink = pEn;*/
463 |
464 | pContext->unkx=0;
465 | //*(ulong*)(pContext+0x1C)=0;
466 |
467 | HANDLE hProcess = 0;
468 | _OBJECT_ATTRIBUTES ObjAttrX = {sizeof(ObjAttrX)};
469 |
470 | _CLIENT_ID ClientIdX={0};
471 | ClientIdX.UniqueProcess = ReceiveMsg.ClientId.UniqueProcess;
472 | ClientIdX.UniqueThread = ReceiveMsg.ClientId.UniqueThread;
473 |
474 | retValue = ZwOpenProcess(&hProcess,0x2000000,&ObjAttrX,&ClientIdX);
475 | if(retValue < 0)
476 | {
477 | printf("Error opening remote process, ret: %X\r\n",retValue);
478 | return -6;
479 | }
480 |
481 | printf("Remote Process Handle: %I64X\r\n",hProcess);
482 |
483 | //*(ulonglong*)(pContext+0x10) = (ulonglong)hProcess;
484 | pContext->hRemoteProcess = hProcess;
485 |
486 |
487 | /*_LIST_ENTRY_* pEnX = (_LIST_ENTRY_*)(pContext);
488 | pEnX->FLink = pEnX;
489 | pEnX->BLink = pEnX;*/
490 |
491 | pContext->List0.Flink = & pContext->List0;
492 | pContext->List0.Blink = & pContext->List0;
493 |
494 |
495 | _PORT_MESSAGE AcceptMsg ={0};
496 | AcceptMsg.MessageId = ReceiveMsg.MessageId;
497 | AcceptMsg.ClientId.UniqueProcess = ReceiveMsg.ClientId.UniqueProcess;
498 | AcceptMsg.ClientId.UniqueThread = ReceiveMsg.ClientId.UniqueThread;
499 |
500 |
501 | _REMOTE_PORT_VIEW RemoteView = {0};
502 | RemoteView.Length=sizeof(_REMOTE_PORT_VIEW);
503 |
504 | retValue = ZwAcceptConnectPort
505 | (&hPort_remote,
506 | 0,
507 | &AcceptMsg,
508 | true,
509 | 0 /* PPORT_VIEW ServerView*/,
510 | &RemoteView);
511 |
512 | printf("ZwAcceptConnectPort, ret: %X\r\n",retValue);
513 | }
514 |
515 | printf("================= Loooooop=====================>\r\n");
516 | _PORT_MESSAGE* pReceiveMsg = (_PORT_MESSAGE*)LocalAlloc(LMEM_ZEROINIT,MaxDataLength);
517 |
518 | while(1)
519 | {
520 |
521 | _PORT_MESSAGE Rpl={0};
522 | Rpl.ClientId.UniqueProcess = PID;
523 | Rpl.ClientId.UniqueThread = TID;
524 |
525 | memset(pReceiveMsg,0,MaxDataLength);
526 | //blocking call
527 | retValue = ZwReplyWaitReceivePort
528 | (hPort,
529 | &PortContext,
530 | &Rpl,
531 | pReceiveMsg);
532 |
533 | printf("ZwReplyWaitReceivePort, ret: %X\r\n",retValue);
534 | //Check pReceiveMsg->u2.s2.Type
535 | unsigned short Typ = pReceiveMsg->u2.s2.Type;
536 | unsigned long TotalLength = pReceiveMsg->u1.s1.TotalLength;
537 | unsigned long DataLength = pReceiveMsg->u1.s1.DataLength;
538 | unsigned long DataInfoOffset = pReceiveMsg->u2.s2.DataInfoOffset;
539 |
540 |
541 |
542 |
543 |
544 | printf("Type: %X\r\n",Typ);
545 | printf("TotalLength: %X\r\n",TotalLength);
546 | printf("DataLength: %X\r\n",DataLength);
547 | printf("DataInfoOffset: %X\r\n",DataInfoOffset);
548 | printf("PID: %I64X\r\n",pReceiveMsg->ClientId.UniqueProcess);
549 | printf("TID: %I64X\r\n",pReceiveMsg->ClientId.UniqueThread);
550 | printf("MsgId: %X\r\n",pReceiveMsg->MessageId);
551 | printf("ClientViewSize: %I64X\r\n",pReceiveMsg->u3.ClientViewSize);
552 |
553 | unsigned long Offset = (TotalLength - DataLength) + DataInfoOffset;
554 |
555 | void* pData = ((char*)(pReceiveMsg))+Offset;
556 | printf("Data: %s\r\n",(char*)pData);
557 |
558 |
559 | typedef enum _LPC_TYPE{
560 | LPC_NEW_MESSAGE, // A new message
561 | LPC_REQUEST, // A request message
562 | LPC_REPLY, // A reply to a request message
563 | LPC_DATAGRAM, //
564 | LPC_LOST_REPLY, //
565 | LPC_PORT_CLOSED, // Sent when port is deleted
566 | LPC_CLIENT_DIED, // Messages to thread termination ports
567 | LPC_EXCEPTION, // Messages to thread exception port
568 | LPC_DEBUG_EVENT, // Messages to thread debug port
569 | LPC_ERROR_EVENT, // Used by ZwRaiseHardError
570 | LPC_CONNECTION_REQUEST // Used by ZwConnectPort
571 | }LPC_TYPE;
572 |
573 | printf("===============================>\r\n");
574 | if(Typ == LPC_NEW_MESSAGE)
575 | {
576 | printf("LPC_NEW_MESSAGE\r\n");
577 | //DIspatch
578 | }
579 | else if(Typ == LPC_REQUEST)
580 | {
581 | printf("LPC_REQUEST\r\n");
582 | }
583 | else if(Typ == LPC_REPLY)
584 | {
585 | printf("LPC_REPLY\r\n");
586 | }
587 | else if(Typ == LPC_DATAGRAM)
588 | {
589 | printf("LPC_DATAGRAM\r\n");
590 | }
591 | else if(Typ == LPC_LOST_REPLY)
592 | {
593 | printf("LPC_LOST_REPLY\r\n");
594 | //Disconnect
595 | break;
596 | }
597 | else if(Typ == LPC_PORT_CLOSED)
598 | {
599 | printf("LPC_PORT_CLOSED\r\n");
600 | //Disconnect
601 | break;
602 | }
603 | else if(Typ == LPC_CLIENT_DIED)
604 | {
605 | printf("LPC_CLIENT_DIED\r\n");
606 | //Disconnect
607 | break;
608 | }
609 | else if(Typ == LPC_EXCEPTION)
610 | {
611 | printf("LPC_EXCEPTION\r\n");
612 | //Disconnect
613 | break;
614 | }
615 | else if(Typ == LPC_DEBUG_EVENT)
616 | {
617 | printf("LPC_DEBUG_EVENT\r\n");
618 | }
619 | else if(Typ == LPC_ERROR_EVENT)
620 | {
621 | printf("LPC_ERROR_EVENT\r\n");
622 | //Disconnect
623 | break;
624 | }
625 | else if(Typ == LPC_CONNECTION_REQUEST)
626 | {
627 | printf("LPC_CONNECTION_REQUEST\r\n");
628 | }
629 | Sleep(1000);
630 | }
631 |
632 |
633 | LocalFree(pReceiveMsg);
634 |
635 |
636 |
637 | return 0;
638 |
639 | };
640 |
641 |
642 | /*
643 |
644 |
645 |
646 |
647 | */
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/ALPC_Server.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Debug
10 | x64
11 |
12 |
13 | Release
14 | Win32
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 |
22 | {1BD5CFAD-ECE8-4192-A68A-24934EC4B445}
23 | Win32Proj
24 | ALPC_Server
25 |
26 |
27 |
28 | Application
29 | true
30 | v110
31 | Unicode
32 |
33 |
34 | Application
35 | true
36 | v110
37 | Unicode
38 |
39 |
40 | Application
41 | false
42 | v110
43 | true
44 | Unicode
45 |
46 |
47 | Application
48 | false
49 | v110
50 | true
51 | Unicode
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | true
71 |
72 |
73 | true
74 |
75 |
76 | false
77 |
78 |
79 | false
80 |
81 |
82 |
83 | Use
84 | Level3
85 | Disabled
86 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
87 |
88 |
89 | Console
90 | true
91 |
92 |
93 |
94 |
95 | Use
96 | Level3
97 | Disabled
98 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
99 |
100 |
101 | Console
102 | true
103 |
104 |
105 |
106 |
107 | Level3
108 | Use
109 | MaxSpeed
110 | true
111 | true
112 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
113 |
114 |
115 | Console
116 | true
117 | true
118 | true
119 |
120 |
121 |
122 |
123 | Level3
124 | Use
125 | MaxSpeed
126 | true
127 | true
128 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
129 |
130 |
131 | Console
132 | true
133 | true
134 | true
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 | Create
148 | Create
149 | Create
150 | Create
151 |
152 |
153 |
154 |
155 |
156 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/ALPC_Server.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Header Files
23 |
24 |
25 | Header Files
26 |
27 |
28 |
29 |
30 | Source Files
31 |
32 |
33 | Source Files
34 |
35 |
36 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/ReadMe.txt:
--------------------------------------------------------------------------------
1 | ========================================================================
2 | CONSOLE APPLICATION : ALPC_Server Project Overview
3 | ========================================================================
4 |
5 | AppWizard has created this ALPC_Server application for you.
6 |
7 | This file contains a summary of what you will find in each of the files that
8 | make up your ALPC_Server application.
9 |
10 |
11 | ALPC_Server.vcxproj
12 | This is the main project file for VC++ projects generated using an Application Wizard.
13 | It contains information about the version of Visual C++ that generated the file, and
14 | information about the platforms, configurations, and project features selected with the
15 | Application Wizard.
16 |
17 | ALPC_Server.vcxproj.filters
18 | This is the filters file for VC++ projects generated using an Application Wizard.
19 | It contains information about the association between the files in your project
20 | and the filters. This association is used in the IDE to show grouping of files with
21 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the
22 | "Source Files" filter).
23 |
24 | ALPC_Server.cpp
25 | This is the main application source file.
26 |
27 | /////////////////////////////////////////////////////////////////////////////
28 | Other standard files:
29 |
30 | StdAfx.h, StdAfx.cpp
31 | These files are used to build a precompiled header (PCH) file
32 | named ALPC_Server.pch and a precompiled types file named StdAfx.obj.
33 |
34 | /////////////////////////////////////////////////////////////////////////////
35 | Other notes:
36 |
37 | AppWizard uses "TODO:" comments to indicate parts of the source code you
38 | should add to or customize.
39 |
40 | /////////////////////////////////////////////////////////////////////////////
41 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/stdafx.cpp:
--------------------------------------------------------------------------------
1 | // stdafx.cpp : source file that includes just the standard includes
2 | // ALPC_Server.pch will be the pre-compiled header
3 | // stdafx.obj will contain the pre-compiled type information
4 |
5 | #include "stdafx.h"
6 |
7 | // TODO: reference any additional headers you need in STDAFX.H
8 | // and not in this file
9 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/stdafx.h:
--------------------------------------------------------------------------------
1 | // stdafx.h : include file for standard system include files,
2 | // or project specific include files that are used frequently, but
3 | // are changed infrequently
4 | //
5 |
6 | #pragma once
7 |
8 | #include "targetver.h"
9 |
10 | #include
11 | #include
12 |
13 |
14 |
15 | // TODO: reference additional headers your program requires here
16 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/ALPC_Server.lastbuildstate:
--------------------------------------------------------------------------------
1 | #v4.0:v110:false
2 | Release|x64|C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Server\|
3 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/ALPC_Server.log:
--------------------------------------------------------------------------------
1 | Build started 9/4/2019 8:05:43 PM.
2 | 1>Project "C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Server\ALPC_Server\ALPC_Server.vcxproj" on node 2 (Build target(s)).
3 | 1>ClCompile:
4 | C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64\CL.exe /c /Zi /nologo /W3 /WX- /O2 /Oi /GL /D WIN32 /D NDEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Yu"stdafx.h" /Fp"x64\Release\ALPC_Server.pch" /Fo"x64\Release\\" /Fd"x64\Release\vc110.pdb" /Gd /TP /errorReport:prompt ALPC_Server.cpp
5 | ALPC_Server.cpp
6 | 1>ALPC_Server.cpp(235): warning C4267: '=' : conversion from 'size_t' to 'unsigned short', possible loss of data
7 | 1>ALPC_Server.cpp(383): warning C4267: '=' : conversion from 'size_t' to 'unsigned short', possible loss of data
8 | Link:
9 | C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Server\x64\Release\ALPC_Server.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Server\x64\Release\ALPC_Server.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Server\x64\Release\ALPC_Server.lib" /MACHINE:X64 x64\Release\ALPC_Server.obj
10 | x64\Release\stdafx.obj
11 | Generating code
12 | Finished generating code
13 | ALPC_Server.vcxproj -> C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Server\x64\Release\ALPC_Server.exe
14 | 1>Done Building Project "C:\Users\walied\Documents\Visual Studio 2012\Projects\ALPC_Server\ALPC_Server\ALPC_Server.vcxproj" (Build target(s)).
15 |
16 | Build succeeded.
17 |
18 | Time Elapsed 00:00:00.51
19 |
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/ALPC_Server.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/ALPC_Server.obj
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/ALPC_Server.pch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/ALPC_Server.pch
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/CL.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/CL.read.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/CL.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/CL.write.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/cl.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/cl.command.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/link-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/link-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/link-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/link-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/link-rc.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/link-rc.read.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/link-rc.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/link-rc.write.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/link.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/link.command.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/link.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/link.read.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/link.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/link.write.1.tlog
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/stdafx.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/stdafx.obj
--------------------------------------------------------------------------------
/ALPC_Server/ALPC_Server/x64/Release/vc110.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ALPC_Server/x64/Release/vc110.pdb
--------------------------------------------------------------------------------
/ALPC_Server/ipch/alpc_server-5509908e/alpc_server-3bfc53da.ipch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ipch/alpc_server-5509908e/alpc_server-3bfc53da.ipch
--------------------------------------------------------------------------------
/ALPC_Server/ipch/alpc_server-5509908e/alpc_server-9d888662.ipch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ipch/alpc_server-5509908e/alpc_server-9d888662.ipch
--------------------------------------------------------------------------------
/ALPC_Server/ipch/alpc_server-5509908e/alpc_server-d9100f5c.ipch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ipch/alpc_server-5509908e/alpc_server-d9100f5c.ipch
--------------------------------------------------------------------------------
/ALPC_Server/ipch/alpc_server-d4682c93/alpc_server-3bfc53da.ipch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/ipch/alpc_server-d4682c93/alpc_server-3bfc53da.ipch
--------------------------------------------------------------------------------
/ALPC_Server/x64/Release/ALPC_Server.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/x64/Release/ALPC_Server.exe
--------------------------------------------------------------------------------
/ALPC_Server/x64/Release/ALPC_Server.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/waleedassar/ALPC_CLIENT_SERVER/e22c01b87b5fdd9ed07d3b641878a5aef9aa1f9e/ALPC_Server/x64/Release/ALPC_Server.pdb
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ALPC_CLIENT_SERVER
2 |
3 |
4 | Demo to show how write ALPC Client & Server using native Ntdll.dll syscalls.
5 |
--------------------------------------------------------------------------------