192 lines · 6.7 KB · C++
RawDownload
/*  name      Vx Api  type      trojan  cve       —  year      unknown  os        Windows  authors   unknown  source    krisyotam  archived  krisyotam (2026)  notes     — */#include "Win32Helper.h" DWORD GetPidFromPidBruteForcingExW(_In_ PWCHAR ProcessNameWithExtension){	UNICODE_STRING NtfsRoot = { 0 };	IO_STATUS_BLOCK IoBlock = { 0 };	HANDLE hDevice = NULL;	OBJECT_ATTRIBUTES Attributes = { 0 };	HMODULE hModule = NULL;	PFILE_PROCESS_IDS_USING_FILE_INFORMATION ProcessIdArray = NULL;	NTSTATUS Status = STATUS_SUCCESS;	DWORD ProcessId = ERROR_SUCCESS, dwProcessInformationListArrayLength = 16384;	NTCREATEFILE NtCreateFile = NULL;	NTCLOSE NtClose = NULL;	NTQUERYINFORMATIONFILE NtQueryInformationFile = NULL;	NTQUERYSYSTEMINFORMATION NtQuerySystemInformation = NULL; 	hModule = GetModuleHandleEx2W(L"ntdll.dll"); 	if (!hModule)		return 0; 	NtCreateFile = (NTCREATEFILE)GetProcAddressA((DWORD64)hModule, "NtCreateFile");	NtClose = (NTCLOSE)GetProcAddressA((DWORD64)hModule, "NtClose");	NtQueryInformationFile = (NTQUERYINFORMATIONFILE)GetProcAddressA((DWORD64)hModule, "NtQueryInformationFile");	NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddressA((DWORD64)hModule, "NtQuerySystemInformation");	if (!NtCreateFile || !NtClose || !NtQueryInformationFile || !NtQuerySystemInformation)		return 0; 	RtlInitUnicodeString(&NtfsRoot, L"\\NTFS\\"); 	InitializeObjectAttributes(&Attributes, &NtfsRoot, OBJ_CASE_INSENSITIVE, NULL, NULL); 	Status = NtCreateFile(&hDevice, GENERIC_READ | SYNCHRONIZE, &Attributes, &IoBlock, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN, 0, NULL, 0);	if (!NT_SUCCESS(Status))		goto EXIT_ROUTINE; 	ProcessIdArray = (PFILE_PROCESS_IDS_USING_FILE_INFORMATION)HeapAlloc(GetProcessHeapFromTeb(), HEAP_ZERO_MEMORY, dwProcessInformationListArrayLength);	if (ProcessIdArray == NULL)		goto EXIT_ROUTINE; 	ZeroMemory(&IoBlock, sizeof(IO_STATUS_BLOCK)); 	Status = NtQueryInformationFile(hDevice, &IoBlock, ProcessIdArray, dwProcessInformationListArrayLength, FileProcessIdsUsingFileInformation);	if (!NT_SUCCESS(Status))		goto EXIT_ROUTINE; 	for (DWORD dwX = 0; dwX < ProcessIdArray->NumberOfProcessIdsInList; dwX++)	{		WCHAR ImageName[MAX_PATH * sizeof(WCHAR)] = { 0 };		SYSTEM_PROCESS_IMAGE_NAME_INFORMATION SystemProcessInformation = { 0 }; 		if (ProcessId != ERROR_SUCCESS)			break; #pragma warning( push )#pragma warning( disable : 4244)		SystemProcessInformation.ProcessId = LongToHandle(ProcessIdArray->ProcessIdList[dwX]);#pragma warning( pop ) 		SystemProcessInformation.ImageName.Buffer = ImageName;		SystemProcessInformation.ImageName.Length = 0;		SystemProcessInformation.ImageName.MaximumLength = sizeof(ImageName); 		Status = NtQuerySystemInformation(SystemProcessIdInformation, &SystemProcessInformation, sizeof(SystemProcessInformation), NULL);		if (!NT_SUCCESS(Status))			continue; 		if (SystemProcessInformation.ImageName.Buffer == NULL)			continue; 		PathStripPathW(SystemProcessInformation.ImageName.Buffer); #pragma warning( push )#pragma warning( disable : 4244)		if (StringCompareW(ProcessNameWithExtension, SystemProcessInformation.ImageName.Buffer) == ERROR_SUCCESS)			ProcessId = ProcessIdArray->ProcessIdList[dwX];#pragma warning( pop ) 	} EXIT_ROUTINE: 	if (ProcessIdArray)		HeapFree(GetProcessHeapFromTeb(), HEAP_ZERO_MEMORY, ProcessIdArray); 	if (hDevice)		NtClose(hDevice); 	return ProcessId;} DWORD GetPidFromPidBruteForcingExA(_In_ PCHAR ProcessNameWithExtension){	UNICODE_STRING NtfsRoot = { 0 };	IO_STATUS_BLOCK IoBlock = { 0 };	HANDLE hDevice = NULL;	OBJECT_ATTRIBUTES Attributes = { 0 };	HMODULE hModule = NULL;	PFILE_PROCESS_IDS_USING_FILE_INFORMATION ProcessIdArray = NULL;	NTSTATUS Status = STATUS_SUCCESS;	DWORD ProcessId = ERROR_SUCCESS, dwProcessInformationListArrayLength = 16384;	WCHAR ProcessParameterTransformed[MAX_PATH * sizeof(WCHAR)] = { 0 };	NTCREATEFILE NtCreateFile = NULL;	NTCLOSE NtClose = NULL;	NTQUERYINFORMATIONFILE NtQueryInformationFile = NULL;	NTQUERYSYSTEMINFORMATION NtQuerySystemInformation = NULL; 	if (CharStringToWCharString(ProcessParameterTransformed, ProcessNameWithExtension, StringLengthA(ProcessNameWithExtension) == 0))		goto EXIT_ROUTINE; 	hModule = GetModuleHandleEx2W(L"ntdll.dll"); 	if (!hModule)		return 0; 	NtCreateFile = (NTCREATEFILE)GetProcAddressA((DWORD64)hModule, "NtCreateFile");	NtClose = (NTCLOSE)GetProcAddressA((DWORD64)hModule, "NtClose");	NtQueryInformationFile = (NTQUERYINFORMATIONFILE)GetProcAddressA((DWORD64)hModule, "NtQueryInformationFile");	NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddressA((DWORD64)hModule, "NtQuerySystemInformation");	if (!NtCreateFile || !NtClose || !NtQueryInformationFile || !NtQuerySystemInformation)		return 0; 	RtlInitUnicodeString(&NtfsRoot, L"\\NTFS\\"); 	InitializeObjectAttributes(&Attributes, &NtfsRoot, OBJ_CASE_INSENSITIVE, NULL, NULL); 	Status = NtCreateFile(&hDevice, GENERIC_READ | SYNCHRONIZE, &Attributes, &IoBlock, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN, 0, NULL, 0);	if (!NT_SUCCESS(Status))		goto EXIT_ROUTINE; 	ProcessIdArray = (PFILE_PROCESS_IDS_USING_FILE_INFORMATION)HeapAlloc(GetProcessHeapFromTeb(), HEAP_ZERO_MEMORY, dwProcessInformationListArrayLength);	if (ProcessIdArray == NULL)		goto EXIT_ROUTINE; 	ZeroMemory(&IoBlock, sizeof(IO_STATUS_BLOCK)); 	Status = NtQueryInformationFile(hDevice, &IoBlock, ProcessIdArray, dwProcessInformationListArrayLength, FileProcessIdsUsingFileInformation);	if (!NT_SUCCESS(Status))		goto EXIT_ROUTINE; 	for (DWORD dwX = 0; dwX < ProcessIdArray->NumberOfProcessIdsInList; dwX++)	{		WCHAR ImageName[MAX_PATH * sizeof(WCHAR)] = { 0 };		SYSTEM_PROCESS_IMAGE_NAME_INFORMATION SystemProcessInformation = { 0 }; 		if (ProcessId != ERROR_SUCCESS)			break; #pragma warning( push )#pragma warning( disable : 4244)		SystemProcessInformation.ProcessId = LongToHandle(ProcessIdArray->ProcessIdList[dwX]);#pragma warning( pop ) 		SystemProcessInformation.ImageName.Buffer = ImageName;		SystemProcessInformation.ImageName.Length = 0;		SystemProcessInformation.ImageName.MaximumLength = sizeof(ImageName); 		Status = NtQuerySystemInformation(SystemProcessIdInformation, &SystemProcessInformation, sizeof(SystemProcessInformation), NULL);		if (!NT_SUCCESS(Status))			continue; 		if (SystemProcessInformation.ImageName.Buffer == NULL)			continue; 		PathStripPathW(SystemProcessInformation.ImageName.Buffer); #pragma warning( push )#pragma warning( disable : 4244)		if (StringCompareW(ProcessParameterTransformed, SystemProcessInformation.ImageName.Buffer) == ERROR_SUCCESS)			ProcessId = ProcessIdArray->ProcessIdList[dwX];#pragma warning( pop ) 	} EXIT_ROUTINE: 	if (ProcessIdArray)		HeapFree(GetProcessHeapFromTeb(), HEAP_ZERO_MEMORY, ProcessIdArray); 	if (hDevice)		NtClose(hDevice); 	return ProcessId;}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t