2014-03-28 71 views
0

我试图用这种方式来保护自己的资源: http://aptogo.co.uk/2010/07/protecting-resources/保护а资源的视频文件

所有这些都将是除我的视频文件好。事情是,当我解密他们时,我得到NSData对象,我无法加载MPMoviePlayerViewController

关于剩余资源。它们看起来没有用处,并且包含非阅读数据。

有没有一种方法可以保护我的视频文件,这些文件可以通过iFunBox这样的应用程序从项目中收到?

回答

1

该方法即将完成的任务是防止人们直接复制资源并使用它们。捕获密钥并执行解密并不困难。

我不认为你可以将原始数据输入到标准的播放器控件中。但是,您可以使用较低级别的核心视频API,这远远超出了简单的SO问题/答案。

由于您使用的方法只是阻止方便的盗版,您的一个选择是将电影文件解密为文件系统上的实际电影文件。这意味着电影的解密版本将驻留在文件系统上,这极大地降低了您的最低安全性。

但是,您可以在电影控制器接管后立即将其删除。由于您可能不希望该文件存在,因此您可以在影片控制器接管后取消链接(即删除)。

作为一名Obj-C程序员,您熟悉引用计数的对象。文件系统中的文件是引用计数的(尽管有些不同)。

实际文件保留在文件系统上,直到没有对它的引用为止。文件系统中的名称只不过是文件系统中控制块的链接和引用计数。

打开文件时,打开的文件描述符构成对实际文件的另一个引用。因此,只要文件描述符保持打开状态,文件就会保留在磁盘上。

但是,由于文件系统链接(即文件路径)消失了,所以对于单纯的凡人来说发现起来有点困难。

只要电影播放器​​控制器保持文件打开,内容就会保留在文件系统中,并且它应该可以工作。如果出于某种原因,电影控制器关闭了文件,或者想根据文件名而不是文件描述符来执行某些操作,则可能会出现问题。

试一下,看看。

0

我建议你(重新)从NSData创建文件,然后播放它。无论如何,如果有人使应用程序的内存转储运行抓住解密文件的机会是相当不错的。