0

为了保护我的程序,我想检查一下是否检测到任何使用我的 PID 执行 OpenProcess 的程序?我想防止其他程序可以轻松地处理我的程序。

我有什么选择?(WinAPI 等)一旦另一个程序使用 OpenProcess,我的程序是否会收到任何通知?

谢谢

4

1 回答 1

1

我有什么选择?(WinAPI 等)一旦另一个程序使用 OpenProcess,我的程序是否会收到任何通知?

不,OpenProcess发生在内核中,并且完全运行而不与正在打开的进程交互。由于它由调试器使用(用于)并且可能在您的进程被卡住或挂起时发生,因此您的进程需要某种“意识到”它已被打开是不切实际的。

您唯一的选择(这是一个糟糕的选择)是在OpenProcess系统调用上使用某种形式的拦截。请注意, 有有效的用途OpenProcess,我认为许多病毒扫描程序在某些时候使用它 - 防止病毒扫描程序很可能进入“我已被攻击”模式。

如果你认为你可以以一种不容易被规避的方式做到这一点,那么你就是在自欺欺人。将另一层钩子放入OpenProcess跳过您的干扰的系统调用中并只是调用 "real"并不难OpenProcess。所以,假设你的程序真的很有趣,有人会找到一种方法来做到这一点......

于 2013-06-19T09:02:35.697 回答