0

我想在系统范围内挂钩CreateProcessEx ,它将所有 Windows 调用重定向到我的包装函数
中,我将在其中将名称记录到文本文件,然后调用 oruginalCreateProcessEx

可以轻松安全地完成吗?

我想钩住所有系统范围的调用,但不是永远只在一段时间内..怎么做?

如果我会在 ram 中找到这个 api 调用的地址,然后通过调用我的程序来覆盖它,那么如果原始函数有些损坏,我将如何调用它?

4

2 回答 2

4

由于几个原因,挂钩CreateProcess是错误的方法。有一种经过批准的机制可以执行此类操作,但您需要加载驱动程序。然后,您的驱动程序可以简单地利用该PsSetCreateProcessNotifyRoutine功能。

话虽如此,使用 Windows 内置的审核功能是否不能满足您的需求?打开进程创建审计将导致系统在创建进程时写入事件日志条目,详细说明有关正在启动的进程的大量信息,包括图像路径。

于 2013-04-17T15:37:41.427 回答
1

CreateProcessEx()是用户模式功能。您必须在每个进程的基础上对其进行修补。这意味着创建一个 DLL 注入到每个正在运行的进程中,例如通过使用SetWindowsHookEx()HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs注册表项,然后让该 DLL 修补它加载到的每个进程的 PE Imports 表。

于 2013-04-17T18:05:18.777 回答