我试图用这种方式保护我的资源: http://aptogo.co.uk/2010/07/protecting-resources/
除了我的视频文件外,一切都会好的。问题是,当我解密它们时,我会收到NSData
个MPMoviePlayerViewController
无法加载iFunBox
的对象。
关于剩余资源。它们看起来毫无用处,并且包含非阅读数据。
有没有办法保护我的视频文件可以通过{{1}}等应用程序从项目中接收?
答案 0 :(得分:1)
所有这些方法都将阻止人们直接复制资源并使用它们。捕获密钥并执行解密并不困难。
我认为你不能将原始数据输入标准播放器控件。但是,您可以使用较低级别的核心视频API,这远远超出简单的SO问题/答案。
由于您使用的方法只是阻止了方便的盗版,因此您可以选择将电影文件解密为文件系统上的实际电影文件。这意味着电影的解密版本将驻留在文件系统上,这大大降低了您的最低安全性。
但是,您可以在电影控制器接管后立即将其删除。由于您可能不希望文件粘在一起,因此您可以在电影控制器接管后取消链接(即删除)文件。
作为Obj-C程序员,您熟悉引用计数对象。文件系统中的文件是引用计数的(尽管有些不同)。
实际文件保留在文件系统上,直到没有对它的引用。文件系统中的名称不过是文件系统中控制块的链接和引用计数。
打开文件时,打开的文件描述符构成对实际文件的另一个引用。因此,只要文件描述符保持打开状态,文件就会保留在磁盘上。
但是,由于文件系统链接(即文件路径)已经消失,因此仅仅为凡人发现它会更加困难。
只要影片播放器控制器保持文件打开,内容就会保留在文件系统中,它应该可以正常工作。如果由于某种原因,电影控制器关闭文件,或者想要仅基于文件名而不是文件描述符来做事情,则可能会出现问题。
试一试,看看。
答案 1 :(得分:0)
我建议你(重新)从NSData创建文件,然后播放它。无论如何,如果有人使app运行的内存转储抓住解密文件的机会相当不错。