информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыSpanning Tree Protocol: недокументированное применениеВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Исходник (внутри). 12.08.01 17:37  Число просмотров: 714
Автор: Glory <Mr. Glory> Статус: Elderman
<"чистая" ссылка>
Если я тебя правильно понял, прога должна следить за другой прогой и если та закрывается - стартовать ее заново. Вот исходник подобной программы, которая стартует calc.exe и проверяет, не закрыт ли он. Если закрыт - стартует его опять. Реализация на VC++ 6.0, Win32 Application.
Конечно реализованный здесь алгоритм не защищен, то есть можно закрыть процесс этой программы, а потом и calc. Для обеспечения защиты необходимо реализовать программу в виде потока, который приаттачивает себя к другому процессу (лучше к сервису, напр. к csrss.exe).
==============================================================

#include "stdafx.h"
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
STARTUPINFO info;
info.cb = sizeof(STARTUPINFO);
info.cbReserved2 = NULL;
info.lpReserved = NULL;
info.lpReserved2 = NULL;
info.dwFlags = STARTF_USESHOWWINDOW;
info.wShowWindow = SW_SHOW;
info.lpDesktop = NULL;
info.lpTitle = NULL;

PROCESS_INFORMATION *pinfo = new PROCESS_INFORMATION;
pinfo->dwProcessId = -1;

while (1)
{
if (!OpenProcess(PROCESS_QUERY_INFORMATION, false, pinfo->dwProcessId))
if (!CreateProcess("c:\\winnt\\system32\\calc.exe", NULL, NULL, NULL, true, NORMAL_PRIORITY_CLASS, NULL, NULL, &info, pinfo))
{
MessageBox(NULL, "Can not create process", "Error", MB_OK + MB_ICONHAND);
return -1;
}

Sleep(1000);
}

delete pinfo;
return 0;
}
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach