Как анализировать двоичные файлы в Linux

Как анализировать двоичные файлы в Linux

В этой статье мы объясним, как анализировать двоичные файлы в Linux.

Мы рассмотрим 5 простых команд и инструментов, которые помогут вам легко анализировать двоичные файлы. Linux предоставляет богатый набор инструментов, которые упрощают анализ двоичных файлов! Какой бы ни была ваша работа, если вы работаете в Linux, знание основ этих инструментов поможет вам лучше понять свою систему.

Давайте начнем.

1. файл

Команда file поможет вам определить точный тип файла, с которым вы имеете дело. file укажите файл в специальном формате, содержащий тесты, чувствительные к положению; тесты с учетом положения по умолчанию и тесты с учетом контекста не выполняются.

Команда сообщает только то, как выглядит файл, а не то, что он есть (в случае, когда файл просматривает содержимое). Программу легко обмануть, поместив магическое число в файл, содержание которого ему не соответствует. Таким образом, команда не может использоваться в качестве инструмента безопасности, кроме как в определенных ситуациях.

# file file.c
file.c: C program text

# file /bin/ls

bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=937708964f0f7e3673465d7749d6cf6a2601dea2, stripped, too many notes (256)

# file /etc/passwd
/etc/passwd: ASCII text

2. ldd

ldd печатает общие объекты (разделяемые библиотеки), необходимые для каждой программы или общего объекта, указанного в командной строке. Когда разрабатывается программное обеспечение, мы стараемся не изобретать велосипед. Существует ряд общих задач, которые требуются большинству программ, таких как печать вывода или чтение из стандартного IN или открытие файлов и т. Д.

Все эти общие задачи абстрагируются в виде набора общих функций, которые каждый может затем использовать вместо написания своих собственных вариантов. Эти общие функции помещены в библиотеку под названием libc или glibc.

# ldd /bin/rm
linux-vdso.so.1 (0x00007ffcd6d7d000)
libc.so.6 => /lib64/libc.so.6 (0x00007f13d841c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f13d89f1000)

3. hexdump

hexdump - отображать содержимое файла в шестнадцатеричном, десятичном, восьмеричном формате или ascii. Утилита hexdump - это фильтр, который отображает указанные файлы или стандартный ввод, если файлы не указаны, в указанном пользователем формате.

Открытие неизвестных файлов в Hexdump поможет вам увидеть, что именно содержит файл. Вы также можете просмотреть ASCII-представление данных, представленных в файле, с помощью некоторых параметров командной строки. Это может помочь вам понять, что это за файл.

# hexdump -C /bin/ls | head
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF…………|
00000010 03 00 3e 00 01 00 00 00 00 5e 00 00 00 00 00 00 |..>……^……|
00000020 40 00 00 00 00 00 00 00 70 82 02 00 00 00 00 00 |@…….p…….|
00000030 00 00 00 00 40 00 38 00 0a 00 40 00 1f 00 1e 00 |…[email protected]…@…..|
00000040 06 00 00 00 04 00 00 00 40 00 00 00 00 00 00 00 |……..@…….|
00000050 40 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 |@…….@…….|
00000060 30 02 00 00 00 00 00 00 30 02 00 00 00 00 00 00 |0…….0…….|
00000070 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 |…………….|
00000080 70 02 00 00 00 00 00 00 70 02 00 00 00 00 00 00 |p…….p…….|
00000090 70 02 00 00 00 00 00 00 1c 00 00 00 00 00 00 00 |p……………|

4 клиента

readelf отображает информацию об одном или нескольких объектных файлах формата ELF. Параметры определяют, какую конкретную информацию отображать. ELF (Executable and Linkable File Format) является доминирующим форматом файлов для исполняемых или двоичных файлов не только в Linux, но и в различных системах UNIX. Ссылка на актуальную спецификацию ELF под рукой при использовании readelf может быть очень полезной.

# readelf -h /bin/ls
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2’s complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x67d0
Start of program headers: 64 (bytes into file)
Start of section headers: 140224 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 13
Size of section headers: 64 (bytes)
Number of section headers: 30
Section header string table index: 29

5. objdump

objdump - отображать информацию из объектных файлов. objdump отображает информацию об одном или нескольких объектных файлах. Параметры определяют, какую конкретную информацию отображать. Эта информация в основном полезна для программистов, которые работают над инструментами компиляции, в отличие от программистов, которые просто хотят, чтобы их программа компилировалась и работала. Этот компилятор генерирует инструкции на машинном языке, эквивалентные исходному коду, которые затем могут быть выполнены ЦП для выполнения заданной задачи.

# objdump -d /bin/ls | head

/bin/ls: file format elf64-x86-64

Disassembly of section .init:

0000000000004000 <.init>:
4000: f3 0f 1e fa endbr64
4004: 48 83 ec 08 sub $0x8,%rsp
4008: 48 8b 05 c9 ef 01 00 mov 0x1efc9(%rip),%rax # 22fd8 <__gmon_start__>

В этой статье мы увидели, как анализировать двоичные файлы в Linux.

Получите высокопроизводительный двойной выделенный сервер серии E5 и дешевый KVM VPS.


Как создать группу в Linux

Как создать группу в Linux

Группы используются для организации пользователей и их привилегий, таких как разрешение на чтение и выполнение. Чтобы добавить группу, используется команда groupadd.

3 способа проверить загрузку процессора в Linux

3 способа проверить загрузку процессора в Linux

Хорошо объясните 3 способа проверить загрузку процессора в Linux. Использование ЦП относится к использованию ресурсов обработки или объему работы, выполняемой ЦП.

Как установить и настроить DenyHosts в CentOS 7

Как установить и настроить DenyHosts в CentOS 7

DenyHosts широко используется как альтернатива Fail2ban. Если было слишком много недействительных попыток входа в систему SSH, он предполагает, что его атаки методом перебора или

Подключите новый диск к серверу Linux

Подключите новый диск к серверу Linux

Мы узнаем, как подключить новый диск к серверу Linux. Для этой демонстрации мы используем облачный сервер CentOS 7. теперь смонтируйте раздел, как показано ниже.

Простая установка Fail2ban на Ubuntu 20.04

Простая установка Fail2ban на Ubuntu 20.04

Хорошо объясните, как легко установить Fail2ban на Ubuntu 20.04. Fail2ban написан на языке программирования Python и является бесплатным с открытым исходным кодом. Конфигурация.

Как установить WireGuard VPN на Ubuntu 20.04

Как установить WireGuard VPN на Ubuntu 20.04

Хорошо объясните, как установить WireGuard VPN на Ubuntu 20.04. WireGuard - чрезвычайно простой, быстрый и современный VPN, в котором используется самая современная криптография.

Как установить OpenSSL 1.1.1d в CentOS

Как установить OpenSSL 1.1.1d в CentOS

OpenSSL - это надежный полнофункциональный инструментарий коммерческого уровня для протоколов безопасности транспортного уровня (TLS) и (SSL). Научитесь устанавливать OpenSSL 1.1.1d в CentOS

Как установить и настроить CSF на CentOS 8

Как установить и настроить CSF на CentOS 8

Как установить и настроить CSF на сервере CentOS 8. ConfigServer Security & Firewall - это (SPI) брандмауэр, приложение для обнаружения входа / вторжений и безопасности.

Конфигурация правила аудита не отражена - как устранить неполадки

Конфигурация правила аудита не отражена - как устранить неполадки

Конфигурация правила аудита не отражена? Узнайте, как наши инженеры службы поддержки устраняют неполадки и решают проблему. Файл конфигурации правил /etc/audit/rules.d/audit.rules

CloudLinux Высокая нагрузка на сервер

CloudLinux Высокая нагрузка на сервер

В этой статье мы узнаем, как наши инженеры службы поддержки устраняют высокую нагрузку CloudLinux на сервер. Убедитесь, что ваши ограничения LVE настроены правильно.