我有一个要求,我想将一个index与一个文件(以某种格式)相关联。我想知道我是否可以进行任何ELF操作并仍然确保保持一致性,以便该文件在linux上运行良好。这里的想法是创建一种文件格式,可以通过某个API[自定义]查询来获取索引。a)是否可以修改ELF头来存储索引(如上所述)。b)如果是,流程是什么? 最佳答案 您可以将包含任何数据的新ELF部分添加到现有可执行文件中。例如$echo42>/tmp/index$objcopy--add-section.my_index=/tmp/index/bin/lsmyls$objdump-s
我有一个要求,我想将一个index与一个文件(以某种格式)相关联。我想知道我是否可以进行任何ELF操作并仍然确保保持一致性,以便该文件在linux上运行良好。这里的想法是创建一种文件格式,可以通过某个API[自定义]查询来获取索引。a)是否可以修改ELF头来存储索引(如上所述)。b)如果是,流程是什么? 最佳答案 您可以将包含任何数据的新ELF部分添加到现有可执行文件中。例如$echo42>/tmp/index$objcopy--add-section.my_index=/tmp/index/bin/lsmyls$objdump-s
inti;intmain(){returni;}-static编译后readelf-l显示来自elf的程序头:ElffiletypeisEXEC(Executablefile)Entrypoint0xxxxx30Thereare6programheaders,startingatoffset52ProgramHeaders:TypeOffsetVirtAddrPhysAddrFileSizMemSizFlgAlignLOAD0x0000000x080480000x080480000x798680x79868RE0x1000>LOAD0x079f940x080c2f940x080c2f9
inti;intmain(){returni;}-static编译后readelf-l显示来自elf的程序头:ElffiletypeisEXEC(Executablefile)Entrypoint0xxxxx30Thereare6programheaders,startingatoffset52ProgramHeaders:TypeOffsetVirtAddrPhysAddrFileSizMemSizFlgAlignLOAD0x0000000x080480000x080480000x798680x79868RE0x1000>LOAD0x079f940x080c2f940x080c2f9
在我的程序中,我想识别一个文件是否是ELF(ExecutableandLinkableFormat)类型。C语言函数如何判断文件是否为elf文件? 最佳答案 如果您唯一想做的事情是测试文件是否为ELF,则读取前16个字节以检查文件标识。前四个字节等于{0x7f,'E','L','F'}。剩余的字节可能会有所不同,但检查它们将帮助您更加确定该文件是elf。查看elf(3)手册页以获取更多详细信息。该手册页提供了足够的信息来解析一般的ELF文件,但如果您想要做的不仅仅是检查格式,那么您可能应该使用一个库。查看两者theElfToolch
在我的程序中,我想识别一个文件是否是ELF(ExecutableandLinkableFormat)类型。C语言函数如何判断文件是否为elf文件? 最佳答案 如果您唯一想做的事情是测试文件是否为ELF,则读取前16个字节以检查文件标识。前四个字节等于{0x7f,'E','L','F'}。剩余的字节可能会有所不同,但检查它们将帮助您更加确定该文件是elf。查看elf(3)手册页以获取更多详细信息。该手册页提供了足够的信息来解析一般的ELF文件,但如果您想要做的不仅仅是检查格式,那么您可能应该使用一个库。查看两者theElfToolch
有一个动态链接到多个共享对象的可执行文件。我如何确定某些符号(导入到可执行文件中)属于它们中的哪一个?如果有不止一种可能性,我可以模拟ld并从哪里获取它吗? 最佳答案 看看nm(1),objdump(1)和elfdump(1). 关于linux-GCC/ELF-我的符号从哪里来?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/331635/
有一个动态链接到多个共享对象的可执行文件。我如何确定某些符号(导入到可执行文件中)属于它们中的哪一个?如果有不止一种可能性,我可以模拟ld并从哪里获取它吗? 最佳答案 看看nm(1),objdump(1)和elfdump(1). 关于linux-GCC/ELF-我的符号从哪里来?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/331635/
我正在尝试查找ELF文件的基址。我知道您可以使用readelf找到程序入口点和不同部分的详细信息(基地址、大小、标志等)。例如,x86架构的程序链接器基于0x8048000。使用readelf我可以看到程序入口点,但输出中没有特定字段告诉基地址。$readelf-etestELFHeader:Magic:7f454c46010101000000000000000000Class:ELF32Data:2'scomplement,littleendianVersion:1(current)OS/ABI:UNIX-SystemVABIVersion:0Type:EXEC(Executable
我正在尝试查找ELF文件的基址。我知道您可以使用readelf找到程序入口点和不同部分的详细信息(基地址、大小、标志等)。例如,x86架构的程序链接器基于0x8048000。使用readelf我可以看到程序入口点,但输出中没有特定字段告诉基地址。$readelf-etestELFHeader:Magic:7f454c46010101000000000000000000Class:ELF32Data:2'scomplement,littleendianVersion:1(current)OS/ABI:UNIX-SystemVABIVersion:0Type:EXEC(Executable