2015-02-05 4 views
1

Есть ли способ защитить exe от подвешивания?C++ Protect Process от приостановки

Обратите внимание, что я являюсь владельцем приложения.

+0

Под «подвешенным» вы подразумеваете выход из приложения? –

+0

Нет, я имею в виду приостановление потоков –

+0

Ссылка - [Приостановка выполнения темы] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms686342%28v=vs.85%29.aspx). * «Эта функция в первую очередь предназначена для использования отладчиками». * –

ответ

0

Согласно msdn. Вам необходимо отключить права доступа THREAD_SUSPEND_RESUME при создании потока. Это предотвратит его приостановку.

0

Существуют такие инструменты, как Sysinternals ProcessExpert, который позволяет приостановить любой процесс. Если у пользователя есть полномочия администратора, нет способа избежать этого.

This SO answer показывает три решения для приостановки процесса окон.

Однако есть способ сделать это чрезвычайно трудным: решение состоит из теневого процесса для вашего приложения. Применение и теневой процесс, то должен следить за состоянием друг друга приостановки и возобновления приостановленного процесса, если необходимо:

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

  • однако этот постоянный мониторинг потребляет процессор, поэтому вы действительно думаете, нужно ли это делать и приемлемо для производительности вашего приложения.

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

Смежные вопросы