Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.
Как скрыть программу от 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, оно должно быть пустым.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS