如何扩展嵌入在C程序中的文件资源
在GCC Linux上,是否有一种方法可以添加一个静态嵌入C程序的文件资源,然后如何将其从main()扩展到/tmp?只需将其存储为字符串(char*)。如果它嵌入了空值,或者您不想为引号、反斜杠等的转义而烦恼,那么uuencode、hex或base64对其进行编码,并将解码例程放入C程序中或从外部调用它。只需使用常规文件操作将数据写入/tmp文件。您可以使用objcopy嵌入资源,然后使用常规文件操作在/tmp中创建文件 如果编译此程序:如何扩展嵌入在C程序中的文件资源,c,linux,gcc,embedded-resource,expand,C,Linux,Gcc,Embedded Resource,Expand,在GCC Linux上,是否有一种方法可以添加一个静态嵌入C程序的文件资源,然后如何将其从main()扩展到/tmp?只需将其存储为字符串(char*)。如果它嵌入了空值,或者您不想为引号、反斜杠等的转义而烦恼,那么uuencode、hex或base64对其进行编码,并将解码例程放入C程序中或从外部调用它。只需使用常规文件操作将数据写入/tmp文件。您可以使用objcopy嵌入资源,然后使用常规文件操作在/tmp中创建文件 如果编译此程序: #include <stdio.h> e
#include <stdio.h>
extern char _binary_resource_bin_start, _binary_resource_bin_end;
int main() {
FILE*out = fopen("/tmp/rsrc.bin","wb");
fwrite(&_binary_resource_bin_start,
&_binary_resource_bin_end - &_binary_resource_bin_start, 1, out);
fclose(out);
}
我相信你会得到你想要的。也许你想隐藏你的PHP代码。如果是这样的话,请记住,从生成的可执行文件中检索PHP代码很简单,甚至不运行后者。如果隐藏/混淆是目标,那么你可能想考虑使用一个PHP编码器。我试过这个:……它工作了!
program: program.o resource.o
$(CC) -o program program.o resource.o
resource.o: resource.bin
objcopy -I binary -O elf32-i386 -B i386 resource.bin resource.o
resource.bin:
echo resource-file-contents > resource.bin