我想在系统范围内挂钩CreateProcessEx
,它将所有 Windows 调用重定向到我的包装函数
中,我将在其中将名称记录到文本文件,然后调用 oruginalCreateProcessEx
可以轻松安全地完成吗?
我想钩住所有系统范围的调用,但不是永远只在一段时间内..怎么做?
如果我会在 ram 中找到这个 api 调用的地址,然后通过调用我的程序来覆盖它,那么如果原始函数有些损坏,我将如何调用它?
由于几个原因,挂钩CreateProcess
是错误的方法。有一种经过批准的机制可以执行此类操作,但您需要加载驱动程序。然后,您的驱动程序可以简单地利用该PsSetCreateProcessNotifyRoutine
功能。
话虽如此,使用 Windows 内置的审核功能是否不能满足您的需求?打开进程创建审计将导致系统在创建进程时写入事件日志条目,详细说明有关正在启动的进程的大量信息,包括图像路径。
CreateProcessEx()
是用户模式功能。您必须在每个进程的基础上对其进行修补。这意味着创建一个 DLL 注入到每个正在运行的进程中,例如通过使用SetWindowsHookEx()
或HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
注册表项,然后让该 DLL 修补它加载到的每个进程的 PE Imports 表。