Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2008, 16:42   #1
One.Love
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 91
Вопрос Незакрываемое приложение

Нужно короче написать приложение которое нельзя будет убить даже в процессах, ну или лучше всего вообще спрятать так чтобы даже в диспетчере задач его небыло видно
Если не сложно помогите пожалуйста кодом как это сделать
Сама форма у меня находится в состоянии Form1.Hide;
One.Love вне форума Ответить с цитированием
Старый 19.02.2008, 16:55   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

надо глобально перехватывать функцию для получения списка процессов NtQuerySystemInformation из ntdll.dll и функци NtOPenProcess и NtTerminateProcess тоже из ntdll.dll
rpy3uH вне форума Ответить с цитированием
Старый 19.02.2008, 17:05   #3
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Может это поможет?
http://delphiworld.narod.ru/base/no_...l_alt_del.html
_Dmitry вне форума Ответить с цитированием
Старый 19.02.2008, 17:09   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Это для 95-х.
B_N вне форума Ответить с цитированием
Старый 19.02.2008, 17:28   #5
WOLFak
Форумчанин
 
Аватар для WOLFak
 
Регистрация: 30.12.2007
Сообщений: 180
По умолчанию

надо запретить доступ к диспетчеру )
Код:
fileopen('C:\windows\system32\taskmgr.exe',fmshareexclusive); // запрет
fileopen('C:\windows\system32\taskmgr.exe',fmShareExclusive); //разрешение
это с форума у мя вроде работает
^_^
WOLFak вне форума Ответить с цитированием
Старый 19.02.2008, 18:47   #6
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение

А что будет если скопировать(изменив имя на другое) Kernel32.dll из Windows 9X в каталог с программой. И использовать по новому имени на NT.
Как такой вариант?
Если нормально будет работать, то библиотеку можно как ресурс в Ексешник вшить. Создавать рядом с программой(при старте), а потом удалять при выключении.
___________________________________ ______________
Кто что думает?
Alter вне форума Ответить с цитированием
Старый 19.02.2008, 18:53   #7
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение Регистрация сервиса в NT

Вот ещё нашёл, для NT:

Код:
// Зависимости: WinSVC, Windows
// Автор:       Alex Kantchev, stoma@bitex.bg
// Copyright:   Собственное написание
// Дата:        19 июня 2002 г.
// *****************************************************

// CreateNTService(ExecutablePath,ServiceName: String)
// ExecutablePath - Полный путь к изполнимого файла от
// которого создавается NT Service
// ServiceName - Имя сервиза которое отобразится
// в Service Control Manager Результат:
//Результат:
// true - если операциая завершена успешно
// false - если есть ошибка. Можно произвести
// call то GetLastError чтобы информироваться об
// естество ошибки

function CreateNTService(ExecutablePath, ServiceName: string): boolean;
var
  hNewService, hSCMgr: SC_HANDLE;
  // Rights: DWORD;
  FuncRetVal: Boolean;
begin
  FuncRetVal := False;
  hSCMgr := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
  if (hSCMgr <> 0) then
  begin
    //Custom service access rights may be built here
    //we use GENERIC_EXECUTE which is combination of
    //STANDARD_RIGHTS_EXECUTE, SERVICE_START, SERVICE_STOP,
    //SERVICE_PAUSE_CONTINUE, and SERVICE_USER_DEFINED_CONTROL
    //You can create own rights and use them as shown in the
    //commented line below.

    //Rights := STANDARD_RIGHTS_REQUIRED or SERVICE_START or SERVICE_STOP
    // or SERVICE_QUERY_STATUS or SERVICE_PAUSE_CONTINUE or
    // SERVICE_INTERROGATE;

    hNewService := CreateService(hSCMgr, PChar(ServiceName), PChar(ServiceName),
      STANDARD_RIGHTS_REQUIRED, SERVICE_WIN32_OWN_PROCESS,
      SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
      PChar(ExecutablePath), nil, nil, nil, nil, nil);
    CloseServiceHandle(hSCMgr);
    if (hNewService <> 0) then
      FuncRetVal := true
    else
      FuncRetVal := false;
  end;
  CreateNTService := FuncRetVal;
end;

// ***

//DeleteNTService(ServiceName: String):boolean;
// ServiceName - имя сервиза подлежающии удаления
//Результат:
// true - если операциая завершена успешно
// false - если есть ошибка. Можно произвести call то GetLastError чтобы
// информироваться об естество ошибки

function DeleteNTService(ServiceName: string): boolean;
var
  hServiceToDelete, hSCMgr: SC_HANDLE;
  RetVal: LongBool;
  FunctRetVal: Boolean;
begin
  FunctRetVal := false;
  hSCMgr := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
  if (hSCMgr <> 0) then
  begin
    hServiceToDelete := OpenService(hSCMgr, PChar(ServiceName),
      SERVICE_ALL_ACCESS);
    RetVal := DeleteService(hServiceToDelete);
    CloseServiceHandle(hSCMgr);
    FunctRetVal := RetVal;
  end;
  DeleteNTService := FunctRetVal;
end;
Пример использования: 

procedure TForm1.Button1Click(Sender: TObject);
var
  tmpS: string;
begin
  tmpS := 'Delphi_Service_' + Application.Title;
  if (CreateNTService(Application.ExeName, tmpS)) then
    MessageDlg('Service ' + tmpS + ' has been successfully created!',
      mtInformation, [mbOK], 0)
  else
    MessageDlg('Unable to create service ' + tmpS + ' Win32 Error code: ' +
      IntToStr(GetLastError), mtWarning, [mbOK], 0);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  tmpS: string;
begin
  tmpS := 'Delphi_Service_' + Application.Title + '1';
  if (DeleteNTService(tmpS)) then
    MessageDlg('Service ' + tmpS + ' has been successfully deleted!',
      mtInformation, [mbOK], 0)
  else
    MessageDlg('Unable to delete service ' + tmpS + ' Win32 Error code: ' +
      IntToStr(GetLastError), mtWarning, [mbOK], 0);
end;
Alter вне форума Ответить с цитированием
Старый 19.02.2008, 19:06   #8
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Ерунда это всё. DeleteService удаляет службу из реестра. От мало-мальски сообразительного юзера прятать процессы можно только руткит-технологиями.
B_N вне форума Ответить с цитированием
Старый 19.02.2008, 19:19   #9
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Ерунда это всё. DeleteService удаляет службу из реестра. От мало-мальски сообразительного юзера прятать процессы можно только руткит-технологиями.
Покажите простенький пример кода руткит-технологии, безвредной. Просто чтобы прятать можно или показать.
___________________________________ ______________
Интересно поглядеть будет.
Alter вне форума Ответить с цитированием
Старый 19.02.2008, 19:34   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

"Простенький"? Хм.. примеров серьёзных вещей полно на rootkit.com , а простой пример перехвата API есть например вот здесь: http://www.windowsitlibrary.com/Content/356/06/2.html
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MDI-приложение Технолог Общие вопросы Delphi 6 02.05.2008 20:10
приложение к facebook ffffffffff Фриланс 1 14.03.2008 18:59
Пароль на приложение Chals Общие вопросы Delphi 6 24.11.2007 21:32
MDI приложение Arsgun Общие вопросы Delphi 4 29.05.2007 12:36
Консольное приложение MAcK Общие вопросы Delphi 2 03.12.2006 18:28