在 Mac OS X 中获取进程创建通知

2024-04-16

我正在尝试为 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(使用前将#替换为@)

在 Mac OS X 中获取进程创建通知 的相关文章

随机推荐

  • C++/SFML 显示故障,通过鼠标单击更改精灵成员

    我正在学习 C SFML 作为练习 我正在制作一个小程序 在窗口中显示 64x64 像素方形棕色精灵的 10x10 网格 该程序允许您使用键盘选择绿色 黄色 蓝色 灰色 棕色方形精灵 并用该选定的精灵替换所述网格上的任何图块 游戏循环如下
  • 无法将必备组件放在与我的应用程序相同的位置

    我使用 VS 2013 我希望 sql server 2012 express localdb 与我创建安装程序时的应用程序位于同一位置 因此 在项目属性 gt 发布 gt 先决条件中 我选择第二个选项 从与我的应用程序相同的位置下载先决条
  • 块局部变量的语法

    我对定义块局部变量的良好风格感到困惑 选择是 选择A method that calls block v w puts v w 选项B method that calls block v w puts v w 当我希望本地块具有默认值时 混
  • 分离 CodeIgniter 配置文件 Git 以便公开发布

    我即将启动一个基于 CodeIgniter 的项目 并计划使用 Git 作为我们的 DVCS 我将与其他一些开发人员合作 中央 原始 服务器是私人托管的 但我也想开源它 稍后将代码发布到Github 我的问题是 有没有办法在 Git 中分离
  • 轻量级加密密钥交换协议

    我有一个嵌入式系统通过 HTTP 将数据发布到 JSON REST 服务 我目前正在使用 HMAC SHA1 进行身份验证 方式与亚马逊AWS http docs amazonwebservices com AWSSimpleQueueSe
  • 为什么 Facebook 不合并它的 CSS/JS 文件?

    我很好奇为什么 Facebook 开发人员选择不将他们的脚本和样式表合并到单个文件中 相反 它们通过 CDN 按需加载 Facebook 显然是一个非常复杂的应用程序 我可以理解这种模块化如何使 Facebook 更易于维护 但是通常的优化
  • Python:将目录及其子目录中的所有文件名写入文本文件

    我的问题如下 我想列出目录及其子目录中的所有文件名 并将输出打印在 txt 文件中 现在这是我到目前为止的代码 import os for path subdirs files in os walk Users user Desktop T
  • 文件正在被分配一个 //# sourceMappingURL 但已经有一个

    我只是注意到 Firefox 控制台为我的项目中的每个 js coffee 文件 甚至是包 输出以下错误 file is being assigned a sourceMappingURL but already has one Chrom
  • 在 R 中将数字时间转换为日期时间 POSIXct 格式

    我有一个数据框 其中包含已读入 R 的日期时间列 时间值显示为数字时间 如下面的数据示例所示 我想将它们转换为日期时间 POSIXct 或 POSIXlt 格式 以便可以查看日期和时间 tdat lt c 974424L 974430L 9
  • LinkedIn 分享 API-v2 返回炒股

    我对 LinkedIn Shares API 的逻辑完全感到困惑 因为我从有关共享的文档中读到的内容LinkedIn API 共享文档 https developer linkedin com docs guide v2 shares sh
  • javascript正则表达式验证范围内的年份

    我有年份的输入字段 我需要一个正则表达式来验证它 我有这样的代码 12 d d d 但我只想允许验证特定范围内的年份 例如 1990 2010 我该怎么做 编辑 范围必须是 1950 2050 尝试这个 1990 2010 199 d 20
  • 如何使用 Selenium 和 C# 将 Cookie 保存为字符串?

    到目前为止 我使用以下代码实现了获取网站的所有 cookie 我想要的 我不需要也不想要特定的 cookie var cookies driver Manage Cookies AllCookies write full path txt
  • 将 Aiohttp 与代理一起使用

    我正在尝试使用异步从 url 列表 由 ids 标识 中获取 HTML 我需要使用代理 我正在尝试将 aiohttp 与代理一起使用 如下所示 import asyncio import aiohttp from bs4 import Be
  • OpenCV 2.4.2 中的错误“OpenCV 错误:错误标志”

    我刚刚开始尝试使用 OpenCV 并根据一本书编写了一个非常简单的小程序 问题是当我尝试编译它时 出现此错误 我会给你我所掌握的所有信息 我使用 Mac OS X 10 7 的 homebrew 安装了 openCV include
  • PHP找不到tmp目录

    我在 tmp 目录中创建文件的函数遇到问题 例如tmpfile and tempnam 他们似乎都无法写入 tmp 并返回 false upload tmp dir在 php ini 中设置 文件上传工作正常 在调试这个错误时我发现sys
  • 在文本矩阵中使用多个 CGAffineTransform

    我正在使用 Quartz 显示文本 这是我的代码 CGContextRef myContext UIGraphicsGetCurrentContext CGContextSelectFont myContext Helvetica 12 k
  • Assertj:如何按对象内容比较2个对象列表?

    给出以下 快速且缺失的 代码 class Pair int x int y List l1 Arrays asList new Match 1 2 new Match 1 3 new Match 2 3 List l2 Arrays asL
  • 如何在 Electron BrowserWindow 中查看 PDF?

    所以我有这个 Electron 应用程序 在一个 html 文件中 我链接了另一个脚本 该脚本为程序提供了一些实用功能 其中之一是 function openPDF filePath let pdfWindow new electron r
  • 是否可以使用多处理对一个 h5py 文件进行并行读取?

    我正在尝试加快从 h5py 数据集文件中读取块 将它们加载到 RAM 内存中 的过程 现在我尝试通过多处理库来做到这一点 pool mp Pool NUM PROCESSES gen pool imap loader indices 加载器
  • 在 Mac OS X 中获取进程创建通知

    我正在尝试为 Mac OS X 编写 kext 当任何进程启动时都会收到通知 在 Windows 中 您可以通过调用 PsSetLoadImageNotifyRoutine 并指定在进程启动时调用的回调来完成此操作 这是有记录的方式 它适用