打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux环境下在可执行程序中嵌入资源文件
Linux环境下在可执行程序中嵌入资源文件
2010-08-11 18:34

1、首先利用objcopy工具把二进制文件装到一个.o文件中
objcopy -I binary -O elf32-i386 --binary-architecture i386 data.txt data.o

可以看到这个.o之中包含了符号

$ nm data.o
0000001c D _binary_data_txt_end
0000001c A _binary_data_txt_size
00000000 D _binary_data_txt_start

_binary_data_txt_start是存放data.txt的起始位置,_binary_data_txt_size是data.txt文件大小


2、写一个c程序,在里面使用这些二进制资源

/* main.c */

#include <stdio.h>

extern int _binary_data_txt_end;
extern int _binary_data_txt_size;
extern int _binary_data_txt_start;

int main(void)
{
int size = (int)&binary_data_txt_size;
char *data = (char *)&binary_data_txt_start;
char *end = (char *)&binary_data_txt_end;
   
printf("taille: %d\n", size);
printf("buffer: %s", data);
printf("start: 0x%p ; end: 0x%p\n",data,end);

return 0;
}


3、编译、链接
gcc -o test main.c data.o


参考
http://www.finiderire.com/post/2009/06/02/Et-un-fichier-exe-pour-les-gouverner-tous
http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[转]binary和text方式打开文件的区别
c语言如何将printf产生的数据写到txt文件中
怎样在Mysql中直接储存图片
带参数的主函数2
Linux 共享库编程 - 我的文章 - 终南的IT空间
boa资料汇总
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服