0

我试图更好地理解 OSX 代码签名以及它在保护我的软件方面为我提供的优势。有人可以为我澄清某些问题吗?

给定一个经过代码签名但没有沙盒化的应用程序:

如果黑客更改了应用程序的二进制文件,则该应用程序不再被视为已签名。但是,它是否仍能正常运行(Lion 会警告用户应用程序未经过代码签名的警告)?

给定一个代码签名沙盒的应用程序:

如果黑客在这种情况下更改代码,不会发生什么?他/她是否可以简单地删除权利文件以创建不再具有任何沙盒限制的未签名版本的应用程序?

给定一个包含签名和沙盒 XPC 服务助手的签名但未盒的应用程序,我可以做些什么来保证黑客无法创建任何部分的未签名(和修改)版本。在我看来,就目前而言,黑客可以执行以下操作:

  • 创建帮助程序的二进制修改版本。因此,这个新版本将是非沙盒和非签名的。

  • 创建主应用程序的二进制修改版本。因此,这个新版本也将是非沙盒和非签名的,并且能够启动新版本的帮助程序。

我错了吗?如果是这样,为什么?

谢谢,

蒂姆

4

1 回答 1

1

你基本上是对的。您正在寻找的是复制保护,这是没有人知道如何去做的事情(好吧),这不是代码签名或沙盒尝试做的事情。如果您的程序在运行时被接管并被迫做不应该做的事情,沙盒的作用就是限制损害。代码签名的作用是防止其他人将他们的程序当作的程序。

我故意使用了“他们的计划”这个词。您必须意识到,一旦“您的程序”在其他人的计算机上并且他们开始弄乱它,它就不再是您的了;这是他们的,他们可以用它做几乎任何他们想做的事情。他们可以取出部分(沙盒等)添加部分(恶意代码等),改变事物,......他们甚至可以编写一个“全新”的程序,恰好包含您的程序的部分(或全部)。

你可以做一些事情来让你的代码难以修改/重用,但没有人想出如何让它变得不可能。苹果没有尝试;他们的安全措施针对其他目标。

于 2013-01-09T21:47:19.227 回答