C elf.h得到ELF64_Shdr的偏移量

时间:2016-10-18 16:11:26

标签: c hex elf

我在C中使用elf.h并且我需要ELF64_Shdr *sh来获取偏移量。我是这样的:

unsigned char offset = sh->sh_offset;
printf("Offset: %x\n",offset);

但是当我知道实际上是6c0的值时(从elf命令行工具获得),这会打印“Offset:c0”。奇怪的是,如果我这样做:

printf("Offset: %x\n",sh->sh_offset);

它打印“Offset:5c0”,它更接近但仍然不太正确。谁能告诉我我做错了什么?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

unsigned char offset = sh->sh_offset;

这是你的问题就在那里。您正在将类型为Elf64_Off的64位实体截断为8位。不要

如果需要保存偏移量,请将其保存在适当类型的变量中:

Elf64_Off offset = sh->sh_offset;

要打印它,请使用%lx格式说明符。