我想为我的应用程序中的内容(资源)文件提供一个简单的保护层。例如,我在我的应用程序中使用了各种声音和图像文件。我想,我可以将它们包装在SFX存档(可能包含WinRAR)中,然后在我的应用程序中,使用一些参数启动SFX exe,例如-silent。但这可能不是最好的方法,所以如果你能给我一些建议,那就太好了。
P.S。我知道这听起来并不是一成不变的(无论如何都有),但出于某些原因需要这样做。
P.S。我可以使用一些方法来帮助一个方法在SFX(或其他一些包)完全提取后隐藏文件。
谢谢。
答案 0 :(得分:0)
压缩资源文件,然后使用您选择的密钥对存档文件的每个32位块进行异或。在运行时XOR每个传入的32位块再次使用密钥,然后将其传递到您的zip库以进行内存中解压缩。
非常轻微的混淆,但应该阻止任何人打开zip文件。
答案 1 :(得分:0)
请勿使用SFX存档。
很大程度上取决于您如何使用资源。如果你有很多需要文件名的库代码,那么的文件会在硬盘上保留一段时间。 如果可以,您想知道您的声音和媒体库是否可以传递指针 - 然后您自己加载文件,解密它们,并将指针传递给解密的缓冲区到媒体API。
关于实际加密。使用归档文件格式,如zlib。这使您能够将所有数据文件存储在单个加密存档中,并将其扩展到内存中。
或者滚动您自己的每个文件加密。在国内推出的XOR加密具有非常快速的优势。
几乎所有文件加密都归结为:
问题是(显然)密钥需要存在于客户端中,因此任何坚定的黑客都可以获得密钥。因此,在这里过于花哨,没有真正的意义。只需生成256个字节的“随机”数据,并在将文件加载到内存时使用它来加密和解密文件 - 或者将它们写入临时文件夹。
如果您需要写出ttemp文件,您可以使用FILE_FLAG_DELETE_ON_CLOSE让temp文件夹安全地自行清理,而不会在磁盘上留下未加密的资源。