1

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

PS我知道这听起来不是不可破解的(反正有一个),但出于某些原因需要这样做。

PS我可以使用一些帮助来隐藏SFX(或其他包)完成提取后的文件。

谢谢你。

4

2 回答 2

0

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

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

于 2010-05-17T22:18:16.690 回答
0

不要使用 SFX 存档。

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

至于实际的加密。要么使用存档文件格式,比如zlib。这使您能够将所有数据文件存储在单个加密存档中并将它们扩展到内存中。

或者滚动您自己的每个文件加密。在家滚动的 XOR 加密具有非常快的优势。

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

  • 从“钥匙”开始。一个短字符串。
  • 使用密钥初始化随机数生成器。
  • 将 rng 中的字节与要加密的数据进行异或以对其进行加密。
  • 稍后,解密数据:
  • 用同一个key开始,初始化rng
  • 这将生成相同的字节流,
  • 将它们与加密数据进行异或以对其进行解密。

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

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

于 2010-05-18T07:21:15.133 回答