3

我用 C/C++ 编写了一个游戏,很快就可以发布了。

我的问题是:什么是使用户无法访问资源(图像/声音等)的好方法?

它不一定是强加密,我只是不希望普通玩家浏览资源文件夹。

截至目前,资源未在 Visual Studio 项目中链接,它们是从路径加载的。

4

2 回答 2

4

这取决于你想对用户隐藏的东西有多严重;你愿意投资多少与回报。这里有一些想法:

  1. 只需更改/删除资源文件的文件扩展名。大多数普通用户已经被停止了。
  2. 通过在您的应用知道要跳过的开头添加一些额外的字节来稍微修改文件以破坏它。额外的字节可能是误导性的标头或垃圾。
  3. 将资源存储在容器/存档格式中,例如 ZIP 或 Blizzard 的 MPQ。可选择使用密码。
  4. 将它们作为资源存储在可执行二进制文件中。用户需要使用资源编辑器/查看器来查看它们;大多数用户甚至不知道他们在那里。
于 2012-09-17T11:39:22.667 回答
3

处理它的一种简单方法是将所有文件压缩到一个受密码保护的 ZIP 文件中,然后在内存中解压缩(如果您想花哨的话,可以将其解压缩到基于内存的文件系统上)。

明显的缺点是您要么需要将所有内容保存在内存中,要么需要多次调用才能获取当前所需的文件。

编辑:快速搜索给了我与此相关的问答的链接: Simple way to unzip a .zip file using zlib

警告

黑客仍然可以通过在应用程序运行时使用调试器分离应用程序进程来访问这些字符串。

于 2012-09-17T10:14:31.437 回答