为了保护我的程序,我想检查一下是否检测到任何使用我的 PID 执行 OpenProcess 的程序?我想防止其他程序可以轻松地处理我的程序。
我有什么选择?(WinAPI 等)一旦另一个程序使用 OpenProcess,我的程序是否会收到任何通知?
谢谢
为了保护我的程序,我想检查一下是否检测到任何使用我的 PID 执行 OpenProcess 的程序?我想防止其他程序可以轻松地处理我的程序。
我有什么选择?(WinAPI 等)一旦另一个程序使用 OpenProcess,我的程序是否会收到任何通知?
谢谢
我有什么选择?(WinAPI 等)一旦另一个程序使用 OpenProcess,我的程序是否会收到任何通知?
不,OpenProcess
发生在内核中,并且完全运行而不与正在打开的进程交互。由于它由调试器使用(用于)并且可能在您的进程被卡住或挂起时发生,因此您的进程需要某种“意识到”它已被打开是不切实际的。
您唯一的选择(这是一个糟糕的选择)是在OpenProcess
系统调用上使用某种形式的拦截。请注意, 有有效的用途OpenProcess
,我认为许多病毒扫描程序在某些时候使用它 - 防止病毒扫描程序很可能进入“我已被攻击”模式。
如果你认为你可以以一种不容易被规避的方式做到这一点,那么你就是在自欺欺人。将另一层钩子放入OpenProcess
跳过您的干扰的系统调用中并只是调用 "real"并不难OpenProcess
。所以,假设你的程序真的很有趣,有人会找到一种方法来做到这一点......