2013-01-09 45 views
0

我试图更好地理解OSX代码签名以及它在保护我的软件方面的优势。有人能为我澄清某些问题吗?签名应用程序的修改

假设一个应用程序,代码签名,但不沙盒

如果黑客修改应用程序的二进制文件的应用程序不再被视为签名。但是,它仍然可以正常运行(Lionat会警告用户应用程序未被代码签名)?

假设一个应用程序,代码签名沙盒:

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

给定一个签名,但不包含签名和沙盒XPC服务帮助沙盒应用是有什么我可以做,以确保黑客无法创造任何部分的非签名(和修改)的版本。在我看来,是因为它目前为黑客可以执行以下操作:

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

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

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

感谢,

回答

1

你基本上是正确的。你需要的是复制保护,这是没有人知道如何做的(好),这不是代码签名或沙箱试图做的事情。如果您的程序在运行时被接管了,并且做出了它不应该做的事情,那么沙盒的作用是限制损害。什么代码签名会阻止其他人将程序关闭为

我故意使用了“他们的程序”。你必须认识到,一旦“你的程序”在别人的计算机上,并且他们开始搞乱它,它就不再是你的了。它们是他们的,他们可以用它做任何他们想做的事情。他们可以删除部分内容(沙盒等),添加部分(恶意代码等),更改内容......他们甚至可以编写一个“全新的”程序,它只是包含程序的一部分(或全部)。

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