Хотите прямо сейчас получить бесплатный видеокурс по программированию для начинающих?

C++ Скрыть программу от диспетчера

Октябрь 16, 2013

1377895671_anonymous

В данной статье рассмотрим небольшой код о том как можно скрыть программу от диспетчера задач. Мы будем использовать функции WinAPI, подгружая библиотеку KERNEL32. Основная суть в том, что мы будем выдавать наш процесс за сервис, используя функцию RegisterServiceProcess. Итак создаем консольное приложение:

#include <iostream.h>
#include <windows.h>
 
BOOL (WINAPI *RegisterServiceProcess)(DWORD dwProcessId,DWORD dwType);
 
int main(){
 
HINSTANCE hKernel;
int i=1;
//Пытаемся получить идентификатор загруженной библиотеки 
hKernel=LoadLibrary("KERNEL32.DLL");
 
if(hKernel){
	//Идентификатор загруженной библиотеки был успешно получен
	cout<<"Success load library kernel32.dll"<< endl;
	RegisterServiceProcess=(int(__stdcall*)(DWORD,DWORD))
	GetProcAddress(hKernel,"RegisterServiceProcess");
	if(RegisterServiceProcess){
		//Указатель на функцию RegisterServiceProcess был
		//успешно получен.
		cout<<"Success to have address of the specified exported dynamic-link 
		library (DLL) function"<< endl;
		if(RegisterServiceProcess(GetCurrentProcessId(),i))
			cout<<"Success registers the process as a service process"<< endl;
			//Процесс был успешно зарегестрирован как сервис
	}else{
		//Указатель на функцию RegisterServiceProcess не
		//был успешно получен.
		cout<<"Failed to have address of the specified exported dynamic-link 
		library (DLL) function"<< endl;
		cin>>i;
		return 0;
	}
}else{
	//Идентификатор загруженной библиотеки не был получен
	cout<<"Failed load library kernel32.dll"<< endl;
	cin>>i;
	return 0;
}
cout<<"Registers the process as a service process:1"<< endl;
cout<<"Unregisters the process as a service process:0"<< endl;
cin>>i;
if (RegisterServiceProcess(GetCurrentProcessId(),i)){
	cout<<"Success"<< endl;
}else{
	cout<<"Failed"<< endl;
}
cin>>i;
return 0;
}}

Чтобы в процессе сборки не было недоразумений проверьте на вкладке Link поле Object libraries/modules, оно должно быть пустым.



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Поддержите проект

Хит продаж:

Случайный анекдот

Моя вторая книга

Что это???

Программирование для Android:

Мы вконтакте

Помощь сайту

Понравился сайт? Он сильно нуждается в раскрутке.

Чтобы помочь в раскрутке - опубликуйте ссылку на сайт (или любую его страницу) на любом другом сайте в интернете. Тогда сайт станет чуточку популярнее.

Или просто нажмите на кнопки социальных сетей которые стоят в конце каждой статьи

Вместе мы сможем сделать программирование более популярным и более понятным для всех!

Заранее спасибо!
Артём Кашеваров.