# file ExecutableExecutable: ELF 32-bit LSB executable,ARM,version 1 (SYSV) ...
根据字符串中是否存在SYSV,我应该能够假设什么?
解决方法 如果看到(SYSV)字符串,则表示ELF头中的e_IDent [EI_OSABI]字段设置为0.从 ELF spec (PDF link)开始:table 5. Operating System and ABI IDentifIErs,e_IDent[EI_OSABI]name Value MeaningELFOSABI_SYSV 0 System V ABIELFOSABI_HPUX 1 HP-UX operating systemELFOSABI_STANDALONE 255 Standalone (embedded) application
我的本地计算机的/usr/share / file / magic / elf文件有一个更长的列表:
# Up to Now only 0,1 and 2 are defined; I've seen a file with 0x83,it seemed# like proper ELF,but extracting the string had bad results.>4 byte <0x80>>8 string >#define EI_NIDENT 16typedef struct { unsigned char e_IDent[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx;} Elf32_Ehdr;figure 4-4: e_IDent[] IDentification Indexesname Value PurposeEI_MAG0 0 file IDentificationEI_MAG1 1 file IDentificationEI_MAG2 2 file IDentificationEI_MAG3 3 file IDentificationEI_CLASS 4 file classEI_DATA 5 Data enCodingEI_VERSION 6 file versionEI_OSABI 7 Operating system/ABI IDentificationEI_ABIVERSION 8 ABI versionEI_PAD 9 Start of padding bytesEI_NIDENT 16 Size of e_IDent[](%s)>8 string >>7 byte 0 (SYSV)>>7 byte 1 (HP-UX)>>7 byte 2 (NetBSD)>>7 byte 3 (GNU/linux)>>7 byte 4 (GNU/Hurd)>>7 byte 5 (86Open)>>7 byte 6 (Solaris)>>7 byte 7 (Monterey)>>7 byte 8 (IRIX)>>7 byte 9 (FreeBSD)>>7 byte 10 (Tru64)>>7 byte 11 (Novell Modesto)>>7 byte 12 (OpenBSD)>8 string >>7 byte 13 (OpenVMS)>>7 byte 97 (ARM)>>7 byte 255 (embedded)
以下是您参考的ELF标题和偏移量(从this link开始):
总结以上是内存溢出为你收集整理的Linux文件命令:SYSV意味着什么?全部内容,希望文章能够帮你解决Linux文件命令:SYSV意味着什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)