C++ 使用户无法访问资源

C++ 使用户无法访问资源,c++,c,visual-studio-2010,embedded-resource,resource-files,C++,C,Visual Studio 2010,Embedded Resource,Resource Files,我已经用C/C++编写了一个游戏,很快就要发布了 我的问题是:怎样才能让用户无法访问资源(图像/声音等) 它不必是强加密,我只是不希望普通玩家浏览资源文件夹 到目前为止,这些资源在Visual Studio项目中没有链接,它们是从一个路径加载的。一种简单的处理方法是将所有文件压缩到一个受密码保护的ZIP文件中,然后在内存中解压(如果您愿意,可以将其解压到基于内存的文件系统中) 明显的缺点是,您需要将所有内容都保存在内存中,或者进行多次调用以获取当前所需的文件 编辑:通过快速搜索,我找到了与此相关

我已经用C/C++编写了一个游戏,很快就要发布了

我的问题是:怎样才能让用户无法访问资源(图像/声音等)

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


到目前为止,这些资源在Visual Studio项目中没有链接,它们是从一个路径加载的。

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

明显的缺点是,您需要将所有内容都保存在内存中,或者进行多次调用以获取当前所需的文件

编辑:通过快速搜索,我找到了与此相关的问答链接:

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

这取决于你多么想对用户隐瞒事情;相对于回报,你愿意投资多少。以下是一些想法:

  • 只需更改/删除资源文件的文件扩展名。大多数普通用户将被停止
  • 通过在开始处添加一些应用程序知道要跳过的额外字节,稍微修改文件以损坏它。额外的字节可能是误导性的标头或垃圾
  • 将资源存储在容器中,例如ZIP或暴雪的MPQ。可以选择使用密码
  • 将它们作为资源存储在可执行二进制文件中。用户需要使用资源编辑器/查看器来查看它们;大多数用户甚至不知道他们在那里

  • 您可以将资源压缩为一个大的常量字符串,并在初始化期间解压缩它们。或者,您可以使您的游戏软件成为免费软件,并利用社区在该软件上的工作。我们曾经将pallate和图像数据分离,并在运行时创建图像。在上,您可以获得游戏相关问题的更合适答案。您建议我如何将资源压缩为字符串?字符串是否会明显大于未压缩资源的总和?这听起来是一个合理的解决方案,我只在两个级别之间加载资源,这样多个需要时间的调用就不会成为问题。你能为我指出如何实现这一目标的方向吗?像一个线程或教程。@Orujimaru我添加了一个链接。我喜欢稍微修改文件的想法,我将尝试一下。谢谢