2009-10-28 4 views
-3

Я разработал приложение в java. Мне нужно, чтобы моя java-программа не завершила работу с диспетчером процессов/диспетчером задач.Un-killable java program

+5

Почему вы хотите достичь этого? – KB22

+3

Будучи в состоянии сделать это, было бы отверстие безопасности размером с луну. По сути, вы сможете легко разрушить компьютеры. – user44242

+0

Avast-процесс делает то, что я ожидаю, так почему это не программа java –

ответ

6

Не возможно ...

Там, возможно, способы, чтобы скрыть его от диспетчера задач или даже других исследователей запатентованного процесса для окон, но что необходим доступ к родной win32 API.

Возможно, вы можете использовать JNI (Java Native Interface) для достижения этого, но я все еще скептически настроен.

& plus JVM - это процесс, который может быть убит.

+0

Hi Asad Khan, Я ищу в Интернете. Они дают это VC++ или RootKit или добавляют дескриптор DENY. Но я не знаю, как использовать его для моей java progrm. Если вы знаете о любом из трех любезно ответьте мне. Thanks & Regards Mayan Alagar –

+1

Итак - вы просите совета о том, как построить руткит ... и вы честно ожидали ответа? –

2

Я считаю, что это невозможно.

ОС всегда должна иметь возможность управлять приложением, что может привести к их прекращению.

1

Это невозможно.

Ближе всего вы можете сделать это, чтобы добавить к вашему программному обеспечению Java запирающийся крючок, который будет блокироваться бесконечно; например Runtime.getRuntime().addShutdownHook(Thread).

Это повлияет на то, что нормальный сигнал об убийстве под Posix не будет иметь никакого эффекта. Из диспетчера задач Windows попытка «Завершить процесс» завершится неудачей, и Windows в конечном итоге предложит указать, что процесс не отвечает и вы хотели бы его прекратить. В этот момент нет возможности предотвратить завершение.

+0

Hi Adamski, Я ищу в Интернете. Они дают это VC++ или RootKit или добавляют дескриптор DENY. Но я не знаю, как использовать его для моей java progrm. Если вы знаете о любом из трех любезно ответьте мне. Thanks & Regards Mayan Alagar –

2

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

(Так что это даст вам внешнюю сторожевую собаку, основанную только на инструментах Java. Конечно, это то, что вы собираетесь делать, когда умирает сам rmid. Я думаю, что что-то умное с cron. Но что, если cron умрет? И так далее и т. Д.)

5

Даже если бы это было возможно, вы не должны даже хотят (не говоря уже о «необходимости»), чтобы сделать это.

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

1

Это возможно на VC++ и на других языках, поскольку вы можете напрямую подключаться к самой ОС. Java-программы всегда проходят через JVM как промежуточный уровень, и если бы вы смогли глубоко подключить его к чьей-то машине через JVM, это было бы огромным дыром в безопасности:

Краткая версия: Если вы абсолютно должен сделать это, сделать это на языке, который компилирует исходные двоичные файлы и не имеет виртуальной машины между вами и OS API.