mirror of https://github.com/vxunderground/VX-API
47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
#include "Win32Helper.h"
|
|
|
|
BOOL Ex_GetHandleOnDeviceHttpCommunication(_Out_ PHANDLE Handle)
|
|
{
|
|
typedef struct HTTPCOMMUNICATIONEXTENDEDATTRIBUTES {
|
|
DWORD dwUnknown1;
|
|
WORD wUnknown2;
|
|
WORD wUnknown3;
|
|
BYTE bStr[16];
|
|
WORD wVersionMajor;
|
|
WORD wVersionMinor;
|
|
DWORD dwFlags;
|
|
QWORD qwCommsHandle;
|
|
BYTE bUnknown4[3];
|
|
}HTTPCOMMUNICATIONEXTENDEDATTRIBUTES, * PHTTPCOMMUNICATIONEXTENDEDATTRIBUTES;
|
|
|
|
NTCREATEFILE NtCreateFile = NULL;
|
|
HMODULE hModule = NULL;
|
|
HTTPCOMMUNICATIONEXTENDEDATTRIBUTES Http = { 0 };
|
|
UNICODE_STRING ObjectFilePath = { 0 };
|
|
OBJECT_ATTRIBUTES Attributes = { 0 };
|
|
IO_STATUS_BLOCK IoBlock = { 0 };
|
|
NTSTATUS Status = ERROR_SUCCESS;
|
|
HANDLE hHandle = NULL;
|
|
|
|
*Handle = NULL;
|
|
|
|
hModule = GetModuleHandleEx2W(L"ntdll.dll");
|
|
if (hModule == NULL)
|
|
return FALSE;
|
|
|
|
NtCreateFile = (NTCREATEFILE)GetProcAddressA((DWORD64)hModule, "NtCreateFile");
|
|
if (!NtCreateFile)
|
|
return FALSE;
|
|
|
|
Http.wUnknown2 = 0xF00;
|
|
Http.wUnknown3 = 0x10;
|
|
StringCopyA((PCHAR)Http.bStr, (PCHAR)"UlOpenPacket000");
|
|
Http.wVersionMajor = 2;
|
|
|
|
RtlInitUnicodeString(&ObjectFilePath, L"\\Device\\Http\\Communication");
|
|
InitializeObjectAttributes(&Attributes, &ObjectFilePath, OBJ_CASE_INSENSITIVE, 0, NULL);
|
|
|
|
Status = NtCreateFile(Handle, 0xC0100000, &Attributes, &IoBlock, NULL, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, 2, 0, &Http, 0x2b);
|
|
|
|
if (NT_SUCCESS(Status)) return TRUE; else return FALSE;
|
|
} |