在任意二进制文件的 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 上更改进程名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 二进制文件中打印所有 Objective-C 类的名称?

excel进制转换

2017.3.20作业

nginx与nfs

sh 在任意数量的tmux窗格中执行并行进程

在 MacOS Catalina 上使用 mdfind 定位函数