├── 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 | --------------------------------------------------------------------------------