2010-05-17 70 views
1

我想为我的应用程序中的内容(资源)文件提供一个简单的保护层。例如,我在我的应用程序中使用了各种声音和图像文件。我想,我可以将它们包装在一个SFX存档(可能与WinRAR包装在一起),然后在我的应用程序中,使用一些参数启动SFX exe,如-silent。但这可能不是最好的方式,所以如果你能给我一些建议,那会很好。保护内容文件

P.S.我知道这听起来并不简单(反正有一个),但这是由于某些原因需要的。

P.S.我可以使用一些方法帮助在SFX(或其他包)完成提取后隐藏文件。

谢谢。

回答

0

请勿使用SFX存档。

好了很多,取决于你如何使用你的资源。如果你有很多需要文件名的库代码,那么文件已将保存在硬盘上一段时间。 如果可以的话,你想知道你的声音和媒体库是否可以传递指针 - 然后你自己加载这些文件,解密它们,然后把指向解密缓冲区的指针传给媒体API。

至于实际加密。可以使用档案文件格式,如zlib。这使您可以将所有数据文件存储在单个加密的归档文件中,并将其展开到内存中。

或者滚动您自己的每个文件加密。 A在家里推出XOR加密的优点是很快很快

几乎所有的文件加密归结为:

  • 开始以 “关键”。短的字符串。
  • 使用该键初始化一个随机数发生器。
  • 将来自rng的字节与要加密的数据进行XOR加密。
  • 之后,对数据进行解密:
  • 开始使用相同的密钥,初始化RNG
  • 将生成了相同的字节流,
  • XOR他们与加密数据进行解密。

问题是(显然)密钥需要存在于客户端,所以任何确定的黑客都可以得到它。所以这里没有真正的意义。只需生成256个字节的“随机”数据,并在您将文件加载到内存时使用它来加密和解密文件 - 或将它们写入临时文件夹。

如果您需要写出ttemp文件,您可能可以使用FILE_FLAG_DELETE_ON_CLOSE使临时文件夹安全地自行清理,而不会在磁盘上留下未加密的资源。

+0

问题是,我无法修改将使用提取的内容的应用程序。所以它需要是一个简单的解决方案,比如将文件解压缩到非常见的文件夹(至少对于基本级别的用户),如C:\ Windows \ System32。 也许,我可以把SFX EXE前面的n个字节。然后我的Loader应用程序可以删除字节,然后执行它? – frbry 2010-05-18 08:08:15

0

压缩您的资源文件,然后用您选择的密钥异或存档文件的每个32位块。在运行时,将每个传入的32位块与密钥再次异或,然后将其传递到您的zip库以进行内存解压缩。

非常轻的混淆,但应该阻止任何人只是打开zip文件。