mirror of https://github.com/vxunderground/VX-API
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#include "Win32Helper.h"
|
|
|
|
ULONG ConvertIPv4StringToUnsignedLongW(_In_ PWCHAR IpAddress)
|
|
{
|
|
RTLIPV4STRINGTOADDRESSW RtlIpv4StringToAddressW = NULL;
|
|
HMODULE hModule = NULL;
|
|
IN_ADDR IpAddressObject = { 0 };
|
|
LPCWSTR TerminatorObject = NULL;
|
|
|
|
hModule = GetModuleHandleEx2W(L"ntdll.dll");
|
|
if (hModule == NULL)
|
|
return 0;
|
|
|
|
RtlIpv4StringToAddressW = (RTLIPV4STRINGTOADDRESSW)GetProcAddressA((DWORD64)hModule, "RtlIpv4StringToAddressW");
|
|
if (!RtlIpv4StringToAddressW)
|
|
return 0;
|
|
|
|
if (RtlIpv4StringToAddressW(IpAddress, FALSE, &TerminatorObject, &IpAddressObject) != ERROR_SUCCESS)
|
|
return FALSE;
|
|
|
|
RtlIpv4StringToAddressW = NULL;
|
|
|
|
return IpAddressObject.S_un.S_addr;
|
|
}
|
|
|
|
ULONG ConvertIPv4StringToUnsignedLongA(_In_ PCHAR IpAddress)
|
|
{
|
|
RTLIPV4STRINGTOADDRESSA RtlIpv4StringToAddressA = NULL;
|
|
HMODULE hModule = NULL;
|
|
IN_ADDR IpAddressObject = { 0 };
|
|
LPCSTR TerminatorObject = NULL;
|
|
|
|
hModule = GetModuleHandleEx2W(L"ntdll.dll");
|
|
if (hModule == NULL)
|
|
return 0;
|
|
|
|
RtlIpv4StringToAddressA = (RTLIPV4STRINGTOADDRESSA)GetProcAddressA((DWORD64)hModule, "RtlIpv4StringToAddressA");
|
|
if (!RtlIpv4StringToAddressA)
|
|
return 0;
|
|
|
|
if (RtlIpv4StringToAddressA(IpAddress, FALSE, &TerminatorObject, &IpAddressObject) != ERROR_SUCCESS)
|
|
return FALSE;
|
|
|
|
RtlIpv4StringToAddressA = NULL;
|
|
|
|
return IpAddressObject.S_un.S_addr;
|
|
} |