ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Неубиваемая программа
  #1  
Старый 26.11.2008, 13:53
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию Неубиваемая программа

Я решил пойти по самому простому пути и сыграть на том что в стандартном виндосовском "диспетчере задачь" нельзя убить одновременно 2 приложения.Пытаюсь сделать так что бы программа запускала свою копию которая бы следила сколько её копий запущенно и в случае когда она одна остается запустить ещё раз свою копию.
Пытаюсь делать вот так
Код:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char fnm[400];
GetModuleFileName(NULL,fnm,400);
SetLastError(0);
CreateEvent(NULL, FALSE, FALSE, TEXT("ProgName_started"));
if (GetLastError() != ERROR_ALREADY_EXISTS)
{
ShellExecute(Form1->Handle,NULL,fnm,NULL,NULL,SW_HIDE);
}
Form1->Hide();
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
for(;;)
{
Sleep(300);
SetLastError(0);
CreateEvent(NULL, FALSE, FALSE, TEXT("ProgName_started"));
if (GetLastError() != ERROR_ALREADY_EXISTS)
{
ShellExecute(Form1->Handle,NULL,fnm,NULL,NULL,SW_HIDE);
break;
}
}
Form1->Show();
}
}
Но не получается уследить за изменением количества запущенных копий программы.
Может кто то что посоветует?
ЗЫ:не откажусь от примера с иньектом потока в системный процесс,который в случае чего будет перезапускать программу.
 
Ответить с цитированием

  #2  
Старый 26.11.2008, 15:09
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

Репутация: 1462
По умолчанию

NtQuerySystemInformation или ToolHelp тебе в помощь ...

хотя имхо удобнее просто засплайсить TerminateProcess , KillProcess и им подобные
 
Ответить с цитированием

  #3  
Старый 26.11.2008, 15:43
LEE_ROY
Постоянный
Регистрация: 09.11.2006
Сообщений: 639
Провел на форуме:
1917742

Репутация: 541


По умолчанию

сплайс палитсо проактивкаме =\
 
Ответить с цитированием

  #4  
Старый 26.11.2008, 17:06
Pernat1y
Постоянный
Регистрация: 20.12.2007
Сообщений: 577
Провел на форуме:
1636674

Репутация: 171


По умолчанию

taskkill /im process.exe /f
грохнет все process.exe довольно быстро. процесс может неуспеть зареспавниться )
 
Ответить с цитированием

  #5  
Старый 26.11.2008, 17:24
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

Кстате NtQuerySystemInformation и есть ToolHelp функции все вместе взятые.
 
Ответить с цитированием

  #6  
Старый 26.11.2008, 17:39
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

p.s. назови ее smss к примеру или winlogon (ее это исполняемый файл)
хорошая защита от дурака...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #7  
Старый 26.11.2008, 17:45
LEE_ROY
Постоянный
Регистрация: 09.11.2006
Сообщений: 639
Провел на форуме:
1917742

Репутация: 541


По умолчанию

Цитата:
Сообщение от Pernat1y  
taskkill /im process.exe /f
грохнет все process.exe довольно быстро. процесс может неуспеть зареспавниться )
тогда ТС при запуске прога пусть удалит taskkill из системы
 
Ответить с цитированием

  #8  
Старый 26.11.2008, 21:16
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от W!z@rD  
p.s. назови ее smss к примеру или winlogon (ее это исполняемый файл)
хорошая защита от дурака...
Это такой аккардеон ,что на него орут проактивки большинства антивирей
ЗЫ:я так и непонял как отследить то что кол-во запущенных копий стало меньше 2х?

Последний раз редактировалось _nic; 26.11.2008 в 21:23..
 
Ответить с цитированием

  #9  
Старый 26.11.2008, 23:19
_antony
Познающий
Регистрация: 16.07.2008
Сообщений: 82
Провел на форуме:
424387

Репутация: 142
По умолчанию

почему бы просто не перехватить NtTerminateProcess ?
 
Ответить с цитированием

  #10  
Старый 27.11.2008, 00:40
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

_nic Тебе Jes выше сказал что используются ToolHelp функции
http://msdn.microsoft.com/en-us/library/ms851517.aspx
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ