Неубиваемый процесс
Подскажите, плз., как сделать процесс(может службу), чтоб его нельзя было убить. (Встречал такие.. когда их пытаешься закрыть через taskmgr.exe, вылетало сообщение "Невозможно завершить процесс, отказано в доступе..."
Первый и самый простой, помогает ТОЛЬКО от Диспетчера:
Нужно просто переименовать совю прогу в lsass.exe или svchost.exe.
Как ни странно, Диспетчер почему-то не хочет убивать такие процессы, даже если они совсем не системой порождены ;-)
Второй способ - написание rootkit. Подменить NtOpenProcess, и если он вызывается с флагом PROCESS_TERMINATE и кто-то хочет убить именно наш процесс(pid его мы знаем заранее) возвращать ошибку, не вызывая системную NtOpenProcess вообще для своего процесса. Способ хороший, но нужно
1) написать драйвер,
2) иметь привеллегии админа для его запуска.
Пример могу скинуть, если нужно. :о)
А вот от примеров драйвера не откажусь.
Вот... Читай, разбирайся... Там есть и примерчик NoTerminate. Это то, что доХтар прописал :-)))
Для анализарования CommandLine есть функция на CommandLineToArgvW(как нистранно Ansi собрата ненашол)
И как конвентировать широкие строки в ANSI я тож ненашол(если кто знает - скажите плз).Почитай про нее в MSDN...
Или передавай все што нужно стандартными АПИ сообщениями...
Да и благополучно завершай работу первого экземпляра...
Извините,у меня лагнул браузер,и заслалось 2 сообщения...
Если нажать кнопочку End Task в диспетчере, то приложению винда пошлет вначале сообщение о закрытии. Если нажать End Process на другой вкладке - никакое сообщение посылаться не будет, прибьёт не задумываясь! Вот это и нужно перехватывать. :-)))
Используй внедрение ДЛЛ. Вот исходник, все предельно просто, мне помогло. Изучай!
Цитата: Chuvak
Используй внедрение ДЛЛ. Вот исходник, все предельно просто, мне помогло. Изучай!
Извините, за возможно, глупый вопрос. Но я не могу понять, как именно сделать какой-либо процесс неубиваемым. Где именно нужно отредактировать и какой именно из двух исходников
Цитата: ШпиЁн
Там есть и примерчик NoTerminate.
УУУУУУУУУУУУУУ, Нодяра сразу троя признаёт!!!
Есть же функция CreateProcess, которой на вход подсовывается SECURITY_ATTRIBUTES...
Может знающие люди подскажут, возможно ли использовать данную функциональность, чтобы создать процесс, овнером, которого была бы только SYSTEM, например? На сколько я понимаю, такие процессы как раз не убиваются... во всяком случае таскманагером.
Цитата: grgdvo
создать процесс, овнером, которого была бы только SYSTEM
Если ваша программа не должна взаимодействовать с пользовательским рабочим столом–пожалуйста,пишите сервис.Только много пользы это вам не сделает
Вот мой мэйк:
%SystemRoot%\system32\cmd.exe /c "cd C:\WINDDK\3790\bin\&&setenv.bat C:\WINDDK\3790\&&cd c:\&&build -ceZ&&pause"
И где сам драйвер? :)