【发布时间】:2019-01-08 15:10:15
【问题描述】:
我正在尝试在输出文件中写入 elf 标头。
我尝试使用 fwrite 和 fputc,但是当我将结果与 readelf -h 进行比较时,它并没有给出我期望的结果。
我发现也许,我必须在 elf 标题可能会改变某些内容之后编写节标题,因为我不确定这是否会以任何可能的方式影响 -h 选项。
char* data2 = malloc(sizeof(char)*sizeof(data));
char* TableHs2 = malloc(sizeof(char)*sizeof(*TableHs));
printf("sizeof(data2) = %ld\n",strlen(data2) );
FILE* resultat=fopen("SortieElf","w+");
memcpy(data2,&data,sizeof(data));
memcpy(TableHs2,TableHs,sizeof(*TableHs));
printf("memcpy succesfull\n");
for(int i=0;i<sizeof(data);i++)
{
//printf("%c\n",data2[i] );
fputc(data2[i],resultat);
}
for(int i=0;i<sizeof(TableHs);i++)
{
//printf("%c\n",data2[i] );
fputc(TableHs2[i],resultat);
}
//fwrite(&data,1,sizeof(data),resultat);
fclose(resultat);
readelf -h 输出中除“ABI 版本”之外的任何内容都不正确。
【问题讨论】:
-
-
你为什么要将内存中的数据复制到data2/TableHs2?为什么不只是来自 data/TableHs 的 fputc?
-
请提供stackoverflow.com/help/mcve 代码 sn-p。我很确定您的 elf 标头结构(此处为变量数据)包含指针。所以很明显你会写指针值,而不是它的内容..
-
@Ctx putc 需要一个字符,但我有一个结构。
-
@Tezirg 我使用 elf.h 中可用的 Elf32_Ehdr 类型,它的元素不包含任何指针。我相信我的代码 sn-p 很好,因为它包含您需要了解我想要做什么的唯一信息,您可以向我询问具体说明。