2011-07-07 35 views

回答

3

您可以使用objcopy嵌入资源,然后使用普通文件操作在/ tmp中创建文件。

如果您编译这个程序:

#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); 
} 

与此生成的文件:

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 

我相信你会得到你想要的东西。

+0

我试过这个:http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967 ...它的工作! :) – Volomike

2

只是将它存储为一个字符串(char *)。如果它嵌入了空值,或者你不想用引号,反斜杠等等的uuencode,hex或base64编码进行转义,或者将解码例程放入你的C程序或者在外部调用它。只需使用常规文件操作即可将数据写入/ tmp文件。

0

也许你正试图隐藏你的PHP代码。如果是这种情况,请记住从生成的可执行文件中检索PHP代码很简单,甚至不需要运行后者。如果隐藏/混淆是目标,那么您可能需要考虑使用PHP编码器。