2015-02-05 2 views
1

exe가 일시 중단되지 않도록 보호 할 수있는 방법이 있습니까?C++ 프로세스가 일시 중지되지 않도록 보호

나는 응용 프로그램의 소유자임을 유의하십시오.

+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은 Windows 프로세스를 일시 중단하는 세 가지 솔루션을 보여줍니다.

그러나이를 극도로 어렵게 만드는 방법이 있습니다. 해결책은 응용 프로그램에 섀도우 프로세스가 있어야합니다. 응용 프로그램과 그림자 프로세스는 서로의 정지 상태를 모니터링하고 필요한 경우 일시 중단 된 프로세스를 다시 시작한다 프로세스가 다른 후 하나를 일시 중단하는대로

  • 이 쌍둥이 접근 방식은 두 과정 중 하나입니다 보장을 활성 및 중지를 방지 할 수 있습니다.

  • 그러나이 상수 모니터링은 CPU를 소비하므로 수행해야하는지, 응용 프로그램의 성능에 적합한 지 생각해보십시오.

디버거를 사용하여 코드의 리버스 엔지니어링을 피하기 위해 일시 ​​중지되지 않도록하려면 다른 효과적인 옵션이 있습니다. 중요한 코드 전체에 여러 타이머 호출을 삽입하고 비정상적인 실행 시간이 일시 중지/디버깅을 나타내는 지 확인하고 코드가 중지되는 경우이를 확인합니다.

관련 문제