我正在尝试为 Mac OS X 编写 kext,当任何进程启动时都会收到通知。
在 Windows 中,您可以通过调用 PsSetLoadImageNotifyRoutine(...) 并指定在进程启动时调用的回调来完成此操作。这是有记录的方式,它适用于从 Win 2k 开始的所有 Windows。
Mac 有类似的东西吗?使用 kauth 进程监听器似乎可以实现这一点,但进程作用域从未在 OS X 中实现。
另一种选择是挂钩 SYS_execve 和朋友,但这是未记录且不受支持的方式。我真的不想走这条路。
我不需要任何取消 - 只是想在进程启动时收到通知,并获取它的 pid 和路径。
嗯,你的问题有点模棱两可。
恕我直言,“在任何进程启动时收到通知”意味着fork
系统调用,不是execve
。但我不知道是否可以通知您fork
通过任何官方 API。
If the execve
是您感兴趣的,请查看内核授权 (kauth) API http://developer.apple.com/library/mac/#technotes/tn2127/_index.html.
您可以在KAUTH_SCOPE_VNODE
并追踪KAUTH_VNODE_EXECUTE
在 execve 执行之前收到通知(并且可能通过回调的返回值拒绝它成功);或注册于KAUTH_SCOPE_FILEOP
并追踪KAUTH_FILEOP_EXEC
后通知execve()
被执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)