Текущий архив: 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.5 MB
Время: 0.034 c