在任意二进制文件的 MacOS 上更改进程名称
Posted
技术标签:
【中文标题】在任意二进制文件的 MacOS 上更改进程名称【英文标题】:Change process name on MacOS of arbitrary binaries 【发布时间】:2021-12-15 17:49:37 【问题描述】:我希望能够在 MacOS 中设置任意二进制文件的进程名称(显示在活动监视器中)。最好,这不需要任何手动逆向工程。
为了澄清,我不是要求在运行时更改它。而是设置一个脚本来更改另一个可执行文件的代码。
(类似于如何在 C 代码中更改 argv[0]
)
【问题讨论】:
不清楚你想要实现什么。您能否以/bin/date
作为二进制示例并阐明您的需求?
@Philippe 很难使用 /bin/date 作为示例,因为它的持续时间不够长,无法在活动监视器中查看。但是,以/bin/sleep
为例,sleep 5
将持续足够长的时间,以使活动监视器能够识别进程名称为“sleep”的新进程。我希望能够编辑类似于/bin/sleep
的可执行文件的二进制文件,以使该名称成为我喜欢的任何名称,例如“睡眠”->“新进程”。
更改 argv[0] 后,您仍然可以在 Activity Monitor 中看到原始二进制名称。
@Philippe 知道什么决定了进程的名称吗?
【参考方案1】:
您可能会为某些应用程序实现它,但会产生相关的后果。
首先,让我们考虑一下活动监视器中的名称。它是 shell 脚本的可执行文件的名称,它是一个 Bundle 或显示的 Bundle 名称。
因此,要更改名称,您基本上需要更改文件名或 Info.plist 中的记录。
这两种方法都不适用于 Apple 提供的应用程序,除非您禁用 SIP(如果这可能适合您 - 一切都是可行的)。
谈到非 Apple 应用程序,您可以更改它们的名称或 Info.plist 记录,但这会导致它们的代码签名无效。您将需要手动允许此类应用在您的 Mac 上运行并克服所有 Apple 弹出窗口。
没有可用于实现此目标的 API。你要么使用 hacky 方式,要么需要改变你想要拥有的东西。
【讨论】:
谢谢。你绝对是正确的,这不是一个好主意。以上是关于在任意二进制文件的 MacOS 上更改进程名称的主要内容,如果未能解决你的问题,请参考以下文章