寻找一种工具来创建包含文件数据的C阵列

时间:2011-06-24 17:16:57

标签: c++

输入:filename.bin

输出:

char file_filename_data[] = {
0x47, 0x45, 0x54, 0x20, 0x2f, 0x63, 0x61, 0x6d, 
0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x48, 0x54, 
0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 
0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x79, 0x6d, 
0x61, 0x70, 0x2e, 0x64, 0x79, 0x6e, 0x64, 0x6e, 
0x73, 0x2e, 0x6f, 0x72, 0x67, 0x0d, 0x0a, 0x55, 
0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65, 0x6e, 
0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 
...
}; // This is the data from the file "filename.bin"

size_t file_filename_size = 1234;

我想将一些文本文件存储在可执行文件中。我在linux和windows中使用CMake并构建C ++项目。

谢谢!

2 个答案:

答案 0 :(得分:7)

xxd正是您要找的。示例调用可以是:

xxd -i filename.bin data_output.h

data_output.h的内容为:

unsigned char in_file[] = {
  0x68, 0x65, 0x6c, 0x6c, 0x6f
};
unsigned int in_file_len = 5;

答案 1 :(得分:1)

大多数情况下,您可以在文件末尾附加信息。这是一个黑客攻击,但它被许多应用程序使用 - 安装程序,python冻结(我认为),许多演示编码器在过去使用过它。

基本上只做(CMD.EXE)

echo“Blah”>> myexefile.exe

您如何找到这些信息?有创造力 - 也许存储一个独特的魔术cookie,或者只是总是把最后4或8个字节告诉你文件的大小,这样你就可以找到它开始的地方。