当前位置: 首页 > 知识库问答 >
问题:

更准确地识别Mac OS上运行的应用程序

弘伟彦
2023-03-14

通过使用NSWorkspace的runningApplications,可以将Mac OS上正在运行的应用程序列表作为NSRunningApplication对象获取,并从中获取其他信息,如前景中的应用程序。

可以使用它们的名称(localizedName)来识别正在运行的应用程序,但我确信这会被恶意应用程序欺骗。bundleIdentifier等其他东西似乎更好,但我相信这也可能被欺骗。

我可以想象,几乎所有的元数据都可以在公共应用商店之外的应用程序中被欺骗,但对于从应用商店获得的任何应用程序,bundleIdentifier之类的东西应该是识别应用程序的安全方法,对吗?

如果我们包含有人从互联网下载的任意应用程序,有没有更好的方法来识别一个应用程序以过滤出恶意应用程序?我意识到可能没有没有没有缺点的解决方案,而是在寻找一个尽力而为的尝试。

共有1个答案

燕刚捷
2023-03-14

正如你提到的,所有这些东西都很容易被欺骗。在编写了一款完全符合您专业描述的产品后,解决方案相对简单:将每个流行应用程序的每个版本输入到一个大型数据库中,然后对您在机器上发现的每个应用程序输入指纹并在数据库中查找。当你发现一个你以前从未见过的应用时,标记它以添加到你的数据库中。

维护该数据库是一项非常庞大且持续不断的工作。这就是产品的大部分价值所在。代理代码没有那么复杂。最新的数据库是客户付费的。这是一个很难进入的空间。

你是正确的,你可以验证签名,以确保从MAS或操作系统的一部分下载的东西是他们声称的那样。这会让你开始,但还远远不够;有太多东西没有来自MAS。

另一个令人头疼的问题是,你可以看到NSWorkspace中当前运行的“应用程序”,但它的含义相当混乱。许多你不认为是“应用”的东西会出现在运行应用程序中,比如MobileDeviceUpdater和nbagent。另一方面,像mysqld这样的东西不是。运行应用程序的指纹可能会错过列表中没有的东西,或者恶意应用程序可能会谎报他们的捆绑路径,以使自己看起来合法。您可以使用像lsof这样的工具来查看进程真正打开了哪些文件,但是它变得越来越复杂。

祝你好运;这是一个很深的兔子洞,有几十个角落的箱子,只有很少的文件。

 类似资料:
  • 我正在使用IntelliJ,我想运行一个以前在Linux中运行的JavaFX项目,我导入了库,并使用了vm参数 <代码>--模块路径/用户/frenk/桌面/javafx-sdk-17/lib--添加模块javafx。控件,javafx。fxml 但我一直收到同样的错误 我看到的所有答案都与vm params有关,所以我无法弄清楚可能是什么问题,我使用java 16作为运行时和macOS bigs

  • 我试图使用OpenCV(Android)处理使用相机拍摄的图像,然后将其传递给Tesseract进行文本(数字)识别,但在图像非常(几乎没有噪声)罚款之前,我没有得到很好的结果。目前我正在对拍摄的图像执行以下处理:1。应用高斯模糊。2.自适应阈值:对图像进行二值化。3.倒置颜色使背景变黑。然后将处理后的图像传递给Tesseract。 但我没有得到好的结果。

  • 我有一个有一些功能的电子表格。其中一个是onEdit(事件)函数,它根据条件将一些值复制到其他工作表。这是代码(简化但重要部分完整): 当我手动编辑单元格时,代码会正常工作。但是,我有一个代码,当用户按下侧边栏中的按钮时编辑单元格,这是代码: 如您所见,此函数使用setValue()更改单元格内容,但是,当我使用此函数时,单元格的值会更改,但onEdit()触发器不起作用。 如何使onEdit()

  • 问题内容: 我试图确保脚本仍在开发服务器上运行。它整理统计数据并提供Web服务,因此应该可以持续使用,但是一天几次,它会由于未知原因而死掉。当我们注意到我们只是再次启动它时,但是后部很痛苦,有些用户没有权限(或专有技术)来启动它。 我内的程序员想花几个小时来解决问题的根源,但内心的忙碌的人认为必须有一种简便的方法来检测应用程序是否未运行,然后重新启动它。 我知道我 可以 通过grep cron-s

  • 下面是识别类似 hello world 和 hello xxx 词组的语法定义: // 定义名为 Hello 的语法 grammar Hello; // 匹配一个关键字 hello,和一个紧随其后的标识符 r : 'hello' ID ; // 匹配小写字母组成的标识符 ID : [a-z]+ ; // 忽略空格、Tab、换行以及 \r(windows) WS : [ \t\r\n]+ ->

  • 问题内容: 我有一个Swing窗口,其中包含一个按钮,一个文本框和一个命名为flag的窗口。根据我单击按钮后的输入,标签应从标志更改为某个值。 如何在同一个窗口中实现这一目标? 问题答案: