Как скрыть программу от Ctrl-Alt-Del?
|
Иногда бывает необходимо создать программу-невидимку, чтобы ее не видел ни пользователь ни Windows (это может быть как зловредный вирус так и полезный сервис). Ниже приведен код, который необходимо поместить в вашу программу: #include #include
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; }
Не забудьте удалить все cout<< ! Они нужны лишь на этапе прогона программы для наглядности. Для компиляции использовался C++Builder 5 и MSVC5, проект типа Console Application, чтобы в процессе сборки не было недоразумений проверьте на вкладке Link поле Object libraries/modules, оно должно быть пустым. |