Jak analizować pliki binarne w systemie Linux

Jak analizować pliki binarne w systemie Linux

W tym artykule wyjaśnimy, jak analizować pliki binarne w systemie Linux.

Omówimy 5 prostych poleceń i narzędzi, które pomogą Ci łatwo analizować pliki binarne. Linux zapewnia bogaty zestaw narzędzi, dzięki którym analizowanie plików binarnych jest dziecinnie proste! Bez względu na to, jaka jest twoja rola zawodowa, jeśli pracujesz na Linuksie, znajomość podstaw tych narzędzi pomoże ci lepiej zrozumieć twój system.

Zacznijmy.

1. plik

Polecenie pliku pomoże ci zidentyfikować dokładny typ pliku, z którym masz do czynienia. file , określ specjalnie sformatowany plik zawierający testy zależne od pozycji; domyślne testy pozycyjne i testy kontekstowe nie będą wykonywane.

Polecenie mówi tylko, jak plik wygląda, a nie co to jest (w przypadku, gdy plik patrzy na zawartość). Program można łatwo oszukać, umieszczając w pliku magiczną liczbę, której zawartość nie pasuje. W związku z tym polecenie nie nadaje się do użytku jako narzędzie bezpieczeństwa poza określonymi sytuacjami.

# 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 drukuje współdzielone obiekty (współdzielone biblioteki) wymagane przez każdy program lub współdzielony obiekt określony w wierszu poleceń. Podczas tworzenia oprogramowania staramy się nie wymyślać koła na nowo. Istnieje zestaw typowych zadań, których wymaga większość programów, takich jak drukowanie danych wyjściowych lub odczytywanie ze standardowego pliku, otwieranie plików itp.

Wszystkie te typowe zadania są wyabstrahowane w zestawie typowych funkcji, z których każdy może następnie korzystać zamiast pisać własne warianty. Te wspólne funkcje są umieszczone w bibliotece zwanej libc lub 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. zrzut heksadecymalny

hexdump - wyświetla zawartość pliku w postaci szesnastkowej, dziesiętnej, ósemkowej lub ascii. Narzędzie hexdump jest filtrem, który wyświetla określone pliki lub standardowe wejście, jeśli nie określono żadnych plików, w formacie określonym przez użytkownika.

Otwieranie nieznanych plików w Hexdump pomaga zobaczyć, co dokładnie zawiera plik. Możesz także wybrać wyświetlanie reprezentacji ASCII danych obecnych w pliku za pomocą niektórych opcji wiersza polecenia. Może to pomóc w ustaleniu, jakiego rodzaju jest to plik.

# 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 czytanie

readelf wyświetla informacje o jednym lub kilku plikach obiektów formatu ELF. Opcje kontrolują, jakie konkretnie informacje mają być wyświetlane. ELF (Executable and Linkable File Format) to dominujący format plików wykonywalnych lub binarnych, nie tylko w systemie Linux, ale także w różnych systemach UNIX. Posiadanie odniesienia do rzeczywistej specyfikacji ELF przydatne podczas korzystania z readelf może być bardzo przydatne.

# 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 - wyświetla informacje z plików obiektowych. objdump wyświetla informacje o jednym lub wielu plikach obiektowych. Opcje kontrolują, jakie konkretnie informacje mają być wyświetlane. Informacje te są przydatne głównie dla programistów, którzy pracują nad narzędziami do kompilacji, w przeciwieństwie do programistów, którzy chcą tylko, aby ich program się kompilował i działał. Ten kompilator generuje instrukcje języka maszynowego odpowiadające kodowi źródłowemu, które mogą być następnie wykonywane przez procesor w celu wykonania określonego zadania.

# 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__>

W tym artykule zobaczyliśmy, jak analizować pliki binarne w systemie Linux.

Uzyskaj wysokowydajny podwójny serwer dedykowany z serii E5 i tani serwer VPS KVM.


Jak stworzyć grupę w Linuksie

Jak stworzyć grupę w Linuksie

Grupy służą do organizowania użytkowników i ich uprawnień, takich jak odczytywanie uprawnień do pisania i wykonywania. Aby dodać grupę, polecenie to groupadd.

3 sposoby na sprawdzenie wykorzystania procesora w systemie Linux

3 sposoby na sprawdzenie wykorzystania procesora w systemie Linux

Dobrze wyjaśnij 3 sposoby sprawdzania wykorzystania procesora w systemie Linux. Wykorzystanie procesora odnosi się do wykorzystania zasobów przetwarzania lub ilości pracy obsługiwanej przez procesor.

Jak zainstalować i skonfigurować DenyHosts w CentOS 7?

Jak zainstalować i skonfigurować DenyHosts w CentOS 7?

DenyHosts jest szeroko stosowany jako alternatywa dla Fail2ban. Jeśli było zbyt wiele nieprawidłowych prób logowania SSH, zakłada się, że jego ataki brute-force lub

Zamontuj nowy dysk na serwerze Linux

Zamontuj nowy dysk na serwerze Linux

Dowiemy się, jak zamontować nowy dysk do serwera Linux. Do tej demonstracji używamy serwera w chmurze CentOS 7. teraz zamontuj partycję, jak pokazano poniżej.

Łatwa instalacja Fail2ban na Ubuntu 20.04

Łatwa instalacja Fail2ban na Ubuntu 20.04

Dobrze wyjaśnij, jak łatwo zainstalować Fail2ban na Ubuntu 20.04. Fail2ban jest napisany w języku programowania Python i jest darmowym oprogramowaniem typu open source. Konfiguracja.

Jak zainstalować WireGuard VPN na Ubuntu 20.04

Jak zainstalować WireGuard VPN na Ubuntu 20.04

Dobrze wyjaśnij, jak zainstalować WireGuard VPN na Ubuntu 20.04. WireGuard to niezwykle prosta, szybka i nowoczesna sieć VPN, która wykorzystuje najnowocześniejszą kryptografię

Jak zainstalować OpenSSL 1.1.1d w CentOS

Jak zainstalować OpenSSL 1.1.1d w CentOS

OpenSSL to solidny, w pełni funkcjonalny zestaw narzędzi klasy komercyjnej dla protokołów Transport Layer Security (TLS) i (SSL). Dowiedz się, jak zainstalować OpenSSL 1.1.1d w CentOS

Jak zainstalować i skonfigurować CSF na CentOS 8

Jak zainstalować i skonfigurować CSF na CentOS 8

Jak zainstalować i skonfigurować CSF na serwerze CentOS 8. ConfigServer Security & Firewall to zapora sieciowa (SPI), aplikacja do logowania/wykrywania włamań i zabezpieczeń.

Konfiguracja reguł audytu nie została odzwierciedlona — jak rozwiązywać problemy

Konfiguracja reguł audytu nie została odzwierciedlona — jak rozwiązywać problemy

Konfiguracja reguł audytu nie została odzwierciedlona? Dowiedz się, jak nasi inżynierowie pomocy technicznej diagnozują i rozwiązują problem.Plik konfiguracyjny reguł /etc/audit/rules.d/audit.rules

CloudLinux Wysokie obciążenie na serwerze

CloudLinux Wysokie obciążenie na serwerze

W tym artykule dowiemy się, jak nasi inżynierowie pomocy technicznej naprawiają wysokie obciążenie serwera CloudLinux. Upewnij się, że Twoje limity LVE są poprawnie skonfigurowane.