Der*_*iel 7 c++ compression encryption password-protection
我正在编写一个游戏,它会在一些xml文档和资源文件中包含大量信息(配置,一些内容等).这将使我和其他人更容易编辑程序,而无需编辑实际的C++文件,也无需重新编译.
但是,随着程序开始增长,与程序在同一目录中的文件会增加.所以我想把它们放在一个文件存档中(因为它们主要是文本,因此压缩效果很好).
我的问题是:压缩所有文件会更容易吗:
我认为数字1和2是相似的,但我找不到有关zlib是否可以处理受密码保护的档案的任何信息.
另请注意,我不希望在程序使用时将存档中的文件"提取"到文件夹中.它应该只在系统的内存中.
我认为您误解了加密带来的可能性。
只要程序在不受信任的主机上执行,就不可能保证任何事情。
最多,您可以使某人对代码进行逆向工程变得困难(加密、代码混淆)或极其困难(自修改代码、调试/挂钩检测),但您无法阻止破解。有了互联网,一旦被一个人破解,所有人都可以使用它。
实际上,这同样适用于防止个人篡改配置。无论采用哪种方法(CRC、哈希 --> 顺便说一句,加密并不是为了防止篡改),只要有足够的时间和手段(和动机),仍然可以对其进行逆向工程。
保证配置不被篡改的唯一方法是将其存储在您控制的地方(服务器),对其进行签名(非对称)并让程序检查签名。但即便如此,它也不会阻止某人提供补丁,让您的程序使用用户提供的(未签名)配置文件运行......
你知道最糟糕的情况吗?人们可能会更喜欢破解版本,因为摆脱了所有这些“安全”措施的负担,它会运行得更快......
注意:是的,这是非法的,但让我们务实一点......
注意:关于动机,你对程序的保护越聪明,对黑客来说就越有吸引力 --> 这对他们来说就像是一个脑筋急转弯!
那么如何提供安全的服务呢?
只有当您提供瘦客户端并在您信任的服务器上执行所有操作时,才能做到这一点……即使这样,您也很难确保没有人在您的服务器中找到您没有想到的门。
站在你的立场上,我只是确保检测到对配置的轻微篡改(将其视为恶意的,并确保在运行任何内容之前验证数据)。毕竟文件损坏的可能性是一样的,如果损坏的配置文件意味着客户端的机器被毁,那将付出惨重的代价:)