ТС - плохо искал, инфы по этому поводу полно.
В таком случае вариантов несколько, по порядку.
1. Можно заинжектить код/длл в диспетчер задач и перехватить функцию, получающую список процессов - хз куда уходит вызов, на win8.1 перехват Process32Next, NtQuerySystemInformation не помог.
2. Можно использовать технику runpe и запуститься в другом процессе. В гугле полно инфы, но если требуется - скину пример.
3. Процесс можно сделать неубиваемым для процессов с меньшими правами:
Код:
bool ProtectProcess()
{
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = false;
if (ConvertStringSecurityDescriptorToSecurityDescriptor("D:P", 1, &sa.lpSecurityDescriptor, NULL))
{
if (SetKernelObjectSecurity(GetCurrentProcess(), DACL_SECURITY_INFORMATION, sa.lpSecurityDescriptor)) return true;
}
return false;
}
Помимо этих вариантов, есть и другие, например, инжект длл куда-нибудь (длл выполняет нужные действия)