Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 更准确地识别Mac OS上正在运行的应用程序_Macos_Security_Process_Bundle Identifier_Nsrunningapplication - Fatal编程技术网

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

Macos 更准确地识别Mac OS上正在运行的应用程序,macos,security,process,bundle-identifier,nsrunningapplication,Macos,Security,Process,Bundle Identifier,Nsrunningapplication,通过使用NSWorkspace的runningApplications,可以将Mac OS上正在运行的应用程序列表作为NSRunningApplication对象获取,并从中获取其他信息,如前景中的应用程序 可以使用它们的名称(localizedName)来识别正在运行的应用程序,但我确信这会被恶意应用程序欺骗。bundleIdentifier等其他东西似乎更好,但我相信这也可能被欺骗 我可以想象,几乎所有的元数据都可以在公共应用商店之外的应用程序中被欺骗,但对于从应用商店获得的任何应用程序,b

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

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

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


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

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

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

您可以验证签名,以确保从MAS或部分操作系统下载的内容与它们声称的内容相同,这是正确的。这会让你开始,但还远远不够;有太多的东西不是来自MAS

另一个让人头疼的问题是,你可以看到NSWorkspace中当前运行的是什么“应用程序”,但它的含义相当混乱。很多你不认为是“应用程序”的东西出现在运行的应用程序中,比如MobileDeviceUpdater和nbagent。另一方面,像mysqld这样的东西不是。运行应用程序的指纹识别可能会遗漏列表中没有的内容,或者恶意应用程序可能会在其捆绑路径上撒谎,以使其看起来合法。您可以使用诸如
lsof
之类的工具来查看流程真正打开了哪些文件,但它变得越来越复杂

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