如何将资源嵌入到我的可执行文件中以对用户隐藏它们?

How can I embed resources within my executable to hide them from a user?

我正在构建一个程序,该程序将从文件中随机 select 文本。

我可以使用什么来向用户隐藏带有文本的文件?

是否可以将此文本构建到可执行文件中?

Is it possible to build in this text to the executable?

将文本文件包含为内联资源的一种方法是稍微修改文本文件并使用 #include 语句:

文本文件的格式:

R"rawtext(
Put all of the text input you want here:
...
)rawtext"

修改可能也可以使用一个小工具来完成,该工具只围绕您想要在编译的预处理步骤中与您的程序内联的文本:

例如在 GNU makefile 中:

 MySource.cpp: MySource.h MyTextFile.inc

 MyTextFile.inc: MyTextFile.txt
     sed -e "s/\(.*\)/R'rawtext()rawtext'/" < $< > $@

在你的程序中你可以使用:

std::istrstream input(
#include "MyTextFile.inc"
);

并将其与 std::istream 一起使用,就像从外部打开的文件中一样。

您可以阅读有关原始字符串文字的更多信息 here

将资产文件构建到 C++ 可执行文件中的一种好方法是将其转换为头文件,您可以将其包含到源代码中。

这个问题的答案显示了如何使用 linux 命令 xxd 将任意文件转换为头文件。

script/tool to convert file to C/C++ source code array

如果您决定需要通过使用可以查看可执行文件中的文本的十六进制编辑器等工具来防止更坚定的用户看到文本,您可以压缩 and/or 加密文件并解密在运行时。

希望这对您有所帮助,

詹姆斯