2015-02-05 103 views
1

有没有任何可能的方法来保护EXE不被中止?C++保护进程免于被暂停

请注意,我是应用程序的所有者。

+0

“暂停”你的意思是退出应用程序? – 2015-02-05 22:05:02

+0

不,我的意思是暂停线程 – 2015-02-05 22:09:11

+0

参考 - [挂起线程执行](https://msdn.microsoft.com/en-us/library/windows/desktop/ms686342%28v=vs.85%29.aspx)。 *“这个函数主要是为调试器设计的。”* – 2015-02-05 22:13:51

回答

0

根据msdn。创建线程时,您需要禁用THREAD_SUSPEND_RESUME访问权限。这将防止它被暂停

0

有一些工具,如Sysinternals ProcessExpert,允许您暂停任何进程。如果用户拥有管理员授权,则无法避免这种情况。

This SO answer显示了三种解决方案来暂停Windows进程。

但是,有一种方法可以使这非常困难:解决方案包括为您的应用程序有一个阴影过程。所述应用和所述阴影处理然后应监视彼此的暂停状态并恢复必要时挂起的进程:

  • 作为工艺已经到另一后暂停之一,这双方法确保了两个过程中的一个是积极并可以防止暂停。然而,这种持续的监控是CPU消耗,所以你真的认为是否有必要这样做,并且可以接受你的应用程序的性能。

如果要防止暂停以避免使用调试程序对代码进行逆向工程,则可以使用另一个更有效的选项。您可以在关键代码段中插入多个定时器调用,并检查异常执行时间是否显示暂停/调试,如果是这种情况,则停止代码。