запрос к исполняемым файлам unix
-
20-09-2019 - |
Вопрос
Это может быть простой вопрос, но я хотел спросить, поскольку я не знаю об этом.
если у меня есть двоичный файл, который был создан на HP-UX, и вдруг я беру этот двоичный файл в linux или, скажем, на любой другой платформе, такой как AIX или sun solaris, и если я хочу проверить детали двоичного файла относительно того, на какой платформе он был разработан, как я могу это сделать на любой платформе? или есть общий способ сделать это на всех версиях unix?
Решение
Тот самый file
команда предоставляет вам некоторую информацию о любом файле, а не только об исполняемых файлах.
В исполняемых файлах это дает такие результаты, как:
32-разрядный консольный исполняемый файл MS Windows PE на Intel 80386 не подлежит перемещению
или
ELF 32-разрядный исполняемый файл MSB, SPARC, версия 1 (SYSV), статически связанный, не удаляемый
Другие советы
В зависимости от того, как оно было настроено, бинутилс objdump
может использоваться в самых разных двоичных форматах.
$ objdump -f flex/bin/flashplayer flex/bin/flashplayer: file format elf32-i386 architecture: i386, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x0804fb20 $ objdump -f flex/bin/adl In archive flex/bin/adl: flex/bin/adl:powerpc:common: file format mach-o-be architecture: powerpc:common, flags 0x00000012: EXEC_P, HAS_SYMS start address 0x00001c88 flex/bin/adl:i386: file format mach-o-i386 architecture: i386, flags 0x00000012: EXEC_P, HAS_SYMS start address 0x00001e64 $ objdump -f flex/bin/adl.exe flex/bin/adl.exe: file format pei-i386 architecture: i386, flags 0x0000012f: HAS_RELOC, EXEC_P, HAS_LINENO, HAS_DEBUG, HAS_LOCALS, D_PAGED start address 0x004014c0
Это двоичный файл ELF для Linux x86, толстый двоичный файл PPC и x86 Mach-O, а также исполняемый файл для Windows, просто для примера.