Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.17;
Скачать: CL | DM;

Вниз

запустить процесс   Найти похожие ветки 

 
4iVan   (2008-07-12 21:31) [0]

у меня есть программа, я хочу в определенный момент закрыть программу и перезапустить ее. каким образом это можно сделать, что бы в тот момент, когда программа выгрузилась, можно было запустить ее же, например с указанным ключем запуска?


 
SergeyIT ©   (2008-07-12 21:40) [1]

Напишите программу, которая будет запускать Вашу.
То есть при выходе изи основной программы запускаете эту дополнительную, кторая при завершении основной, запускает ее с любым ключем. Смотрите - CreateProcess и еще Mutex (тему на сайте - запрет запуска второй копии приложеня - как отследить выгрузку основной программы)


 
AFHU   (2008-07-12 22:23) [2]


> в определенный момент закрыть программу и перезапустить
> ее


> Напишите программу, которая будет запускать Вашу.


Вы меня конечно извините, давно это было, но я прописывал в конце программы finally и там команду запуска этой же программы.

То есть вместо закрытия при определённом условии получался её перезапуск. Это ли не проще? Чем создавать 2-ую программу для запуска первой. Могу даже подкрепить свой вариант кодом


 
SergeyIT ©   (2008-07-12 22:31) [3]

Так варианты возможны. Я когда-то использовал BAT файл (в котором можно прописать все, что угодно, и его запускал)


 
AFHU   (2008-07-12 22:33) [4]

Только не finally, а finalization:

implementation
...
initialization
...
finalization

if not ExitPodtverzhdenie then MyProc.FileOpen(Application.ExeName);

end.

Ну процедуру я использовал свою, не проблема заменить стандартной


 
palva ©   (2008-07-12 23:11) [5]


> Это ли не проще?

Может быть и проще, но это не ответ на вопрос. Второй экземпляр программы запускается в тот момент, когда работа первого экземпляра еще не закончилась. Кроме того программа может быть написана так, чтобы не допускать запуск двух экземпляров.


 
AFHU   (2008-07-12 23:42) [6]

> palva ©   (12.07.08 23:11) [5]

Да, про блокировку второго экземпляра я не подумал. Поэтому тут зависит всё от конкретного случая. Хотя обойти эту заминку тоже несложно, например, если мы в системе создали атом-флаг, по которму ориентируемся, запущена программа или нет, то в finalization мы его может удалить до запуска второй копии. Теоретически всё пройдёт гладко

Ну уж пусть автор сам выбирает, что ему проще и ближе :)


 
Германн ©   (2008-07-13 00:20) [7]


> Ну уж пусть автор сам выбирает, что ему проще и ближе :)
>

Имхо судя по сабжу или речь идет о чужой программе, или он вообще не туда смотрит.

> что бы в тот момент, когда программа выгрузилась, можно
> было запустить ее же, например с указанным ключем запуска?
>
>


 
palva ©   (2008-07-13 00:33) [8]

Если автор пишет вирус, то делают так: запускают сразу три процесса, каждый из них следит, чтобы остальные два процесса работали и если один из них убит, то сразу же запускается еще один.


 
Riply ©   (2008-07-13 00:39) [9]

> [8] palva ©   (13.07.08 00:33)
> Если автор пишет вирус, то делают так: запускают сразу три процесса, каждый из них следит,
> чтобы остальные два процесса работали и если один из них убит, то сразу же запускается еще один.

"Вирусы реальных пацанов ваще не имеют своего працесса" (с) составная :)


 
Renegat   (2008-07-13 00:50) [10]

> Вирусы реальных пацанов ваще не имеют своего працесса

И ведь Riply умную вещь говорит! Нужно, когда завершаем свой процесс, подвесить вирь отдельным тредом к какому-нить CSRSS или VMM32. Далее внедряем DLL, получаем доступ в R0 - и всё батенька! Тройка, семёрка, туз!
Кхм, о чём это я...

Ах да. Можно в самом деле "приклеить" поток в чужое адресное пространство, а в его коде будет ожидаться событие выгрузки (WaitForSingleObject по хендлу процесса), и если таковая произошла - выполняться запуск с нужными ключами, с последующим обрубанием себя. Только вот может быть не стоит строго ожидать выгрузки, а перезапуститься до того как у "родителя" будет вызван ExitProcess? Или с этим есть проблемы?


 
Riply ©   (2008-07-13 01:24) [11]

> [10] Renegat   (13.07.08 00:50)

Ну ты пораспинайся, пораспинайся :)
"реальные пацаны" на ус то мотают :)


 
Renegat   (2008-07-13 01:37) [12]

> [11] Riply ©   (13.07.08 01:24)

А я код-то не даю! Вряд ли они для таких дел найдут 100% рабочий алгос. Особенно под Делфи...
А так, если заинтересует - пусть в ядре поразбираются, покопают... авось и отпадёт охота бяку фсякую писать ;)


 
Германн ©   (2008-07-13 01:40) [13]


> Riply ©   (13.07.08 01:24) [11]
>
> > [10] Renegat   (13.07.08 00:50)
>
> Ну ты пораспинайся, пораспинайся :)
> "реальные пацаны" на ус то мотают :)
>

Замучаются потом разматывать :)

И потом. palva ©   (13.07.08 00:33) [8] вас куда-то не в ту степь направил.
Имхо. :)


 
AFHU   (2008-07-13 01:46) [14]

Ну вы даёте, братцы-кролики :)

В ветке для начинающих обсуждаете принципы создания неубиваемого вирусного процесса ;-) Кто надо, тот очень даже всё намотает куда надо, и код напишет и всё уже остальное доделает :)

Между прочим, тут недавно имел дело с одним человеком, он вот загорелся идеей защитить свой процесс, сделать его как avp.exe, невырубаемым (чтобы при завершении процесса вылазила ошиька от отказе в доступе)

И он этого добился, правда использовал C++ Builder, но это уже мелочи. Теперь при завершении процесса вылазит сообщение: "Фиг тебе!" :)))

А вообще слышал, что Касперский выкупил лицензию на использование этой защиты аж у Microsoft. Похоже на правду.


 
Германн ©   (2008-07-13 01:53) [15]


> А вообще слышал, что Касперский выкупил лицензию на использование
> этой защиты аж у Microsoft. Похоже на правду.
>

"- Ой, что деется! Вчера траншею рыли,
Так откопали две коньячные струи!
- Говорят, шпионы воду отравили
    самогоном.
Ну, а хлеб теперь из рыбьей чешуи.
               Словно мухи, тут и там,
 Ходят слухи по домам,
 А беззубые старухи
 Их разносят по умам,
 Их разносят по умам."
(с) Даже стыдно публиковать тут копирайт. И так он всем известен.


 
AFHU   (2008-07-13 02:02) [16]

> Германн ©   (13.07.08 01:53) [15]

Думаете, сарафанное радио, слухи. больные фантазии?

Я бы тоже так считал, если человек, который мне об этом говорил, не упомянул об источнике. А источник интересный :)

В общем, этот человек набрался наглости и написал письмо, как раз с этим вопросом: "как вы сделали, чтобы ваш антивирус нельзя было вырубить через диспетчер задач". Что самое интересное, ему пришёл ответ (через 2 недели). Ну вот там и было "Здравствуйте. Использованный в нашем антивирусе способ защиты является технологийе Майкрософт, за использование которой мы платим деньги и не может её разглашать"

:) Текст конечно примерный, но сомнений в том, что ответ действительно пришёл у меня нет. Ибо если даже подумать: какой смысл им не отвечать на письмо? Этим самым они только ещё больше "раздразнят аппетит" у автора письма, может быть он начнёт активно ломать их продукт и может быть так или иначе даже докопается до истины! А тут сразу его огорошить, пусть где хочет, там и ищет эту технологию, но зато хоть не будет ломать их антивирус

ps: а подобные процедуры подобные существуют, просто запрятаны в глубинах Windows ;-) И локументации по ним в MSDN нет. Ну разве что только для подписчиков msdn (а подписка стоит денег)


 
Германн ©   (2008-07-13 02:16) [17]


> AFHU   (13.07.08 02:02) [16]
>
> > Германн ©   (13.07.08 01:53) [15]

Тоже слухи.

> ps: а подобные процедуры подобные существуют, просто запрятаны
> в глубинах Windows ;-) И локументации по ним в MSDN нет.
>  Ну разве что только для подписчиков msdn (а подписка стоит
> денег)
>

Не верю!


 
AFHU   (2008-07-13 02:23) [18]

> Не верю!

Ух, какой вы недоверчивый :)

Ну вот например найдите мне описание ZwTerminateProcess в MSDN
(эта процедура правда не блокирует процесс, а совсем наоборот, отвечает за завершение любого процесса, даже системного)


 
AFHU   (2008-07-13 02:29) [19]

> Ну вот например найдите мне описание ZwTerminateProcess
> в MSDN

Как быстро меняется мир. Теперь уже описание есть :-(
http://msdn.microsoft.com/en-us/library/aa906904.aspx

Правда там упоминается про Header: Ntddk.h
А как раз с этим заголовочным файлом у многих проблемы: его просто-напросто нет. Вот и ищут сорви-головы, гоняются за ним по интернету

И всё-таки не уверен, что абсолютно все свои карты Microsoft раскрыла и документировала в MSDN все процедуры (которые можно вызвать)


 
Германн ©   (2008-07-13 02:40) [20]


> AFHU   (13.07.08 02:23) [18]
>
> > Не верю!
>
> Ух, какой вы недоверчивый :)
>

Ты и на доли процента это не представляешь,


 
Riply ©   (2008-07-13 02:58) [21]

> [18] AFHU   (13.07.08 02:23)
> Ну вот например найдите мне описание ZwTerminateProcess в MSDN

Ничего Microsoft не прячет.
А функции не документирует потому, что оставляет за собой право менять их
как ей заблагарассудиться :)

IMHO, разумеется. Ну... почти IMHO :)



Страницы: 1 вся ветка

Текущий архив: 2008.08.17;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.023 c
15-1214812286
Nous Mellon_
2008-06-30 11:51
2008.08.17
Многопоточность в пхп, как лучше сэмулировать


2-1216036098
small
2008-07-14 15:48
2008.08.17
локальная сеть


4-1194839861
Potato
2007-11-12 06:57
2008.08.17
Настройка тарелки на спутник, измерение сигнала качества


15-1214840729
@!!ex
2008-06-30 19:45
2008.08.17
У кого есть дельфи и SynEdit откомпилируйте, пожалуйста


4-1194777304
Niki
2007-11-11 13:35
2008.08.17
Процессы