Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.268 c
2-1215701956
tytus
2008-07-10 18:59
2008.08.17
Как в ячейку Excel записать знак суммы ∑ ?


2-1215629693
Al
2008-07-09 22:54
2008.08.17
Как сделать несколько Hotkey s?


15-1214814799
Prohodil Mimo
2008-06-30 12:33
2008.08.17
Как разделить аккумулятор?


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


15-1214722663
Kolan
2008-06-29 10:57
2008.08.17
Присоветуйте книжку о том, как фотографировать.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский