2011-07-07 32 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編碼器。