Это может быть не be a ELF исполняемый файл. Есть много вещей, которые будут выполняться, которые не являются файлами ELF (такими как скрипты оболочки, файлы Perl, исходные файлы Python py и скомпилированные файлы). Есть даже те вещи, которые будут «работать» без отдельного идентифицируемого файла вообще (псевдонимы или функции в вашей оболочке, bash
встроенных и т. Д.).
Я бы первым выполнить:
file /path/to/your/file
, чтобы увидеть, какой файл он на самом деле есть например, с помощью:
pax> file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.26,
BuildID[sha1]=0xd3280633faaabf56a14a26693d2f810a32222e51,
stripped
Только если он признан как файл ELF вы должны попробовать рассматривать ее как таковую.
pax> readelf -h /bin/ls
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x804c1b4
Start of program headers: 52 (bytes into file)
Start of section headers: 111580 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 9
Size of section headers: 40 (bytes)
Number of section headers: 28
Section header string table index: 27
Для чего это стоит, у меня есть сценарий резервного копирования, который выполняет только штраф, но который потерпит неудачу вашего readelf
предположения:
pax> file backup1.sh
backup1.sh: Bourne-Again shell script, ASCII text executable
pax> readelf -h backup1.sh
readelf: Error: Unable to read in 0x253a bytes of section headers
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start
Что касается того, что вы делаете, когда вы узнали, что ISN 't Формат ELF, который зависит от того, что вы пытаетесь выяснить, что вы на самом деле не указали. Если все, что вы хотите сделать, это запустить readelf
, это не сработает, если это не файл формата ELF.
Если вы хотите какую-либо конкретную информацию о исполняемом файле, вы должны сказать нам, как:
- какой тип это (от
file
, например); и
- информацию, которую вы хотите.
Файл, который вы даете readelf, не является файлом ELF - я думаю, это довольно очевидно. Без дополнительной информации вы можете получить всю помощь. Возможно, покажите свою командную строку readelf? –