Cách phân tích tệp nhị phân trong Linux

Cách phân tích tệp nhị phân trong Linux

Trong bài viết này, chúng tôi sẽ giải thích cách phân tích tệp nhị phân trong Linux.

Chúng tôi sẽ đề cập đến 5 lệnh và công cụ đơn giản có thể giúp bạn phân tích các tệp nhị phân một cách dễ dàng. Linux cung cấp một bộ công cụ phong phú giúp việc phân tích các tệp nhị phân trở nên dễ dàng! Bất kể vai trò công việc của bạn là gì, nếu bạn đang làm việc trên Linux, biết những kiến ​​thức cơ bản về các công cụ này sẽ giúp bạn hiểu hệ thống của mình tốt hơn.

Bắt đầu nào.

1. tệp

Lệnh tệp sẽ giúp bạn xác định loại tệp chính xác mà bạn đang xử lý. tập tin , chỉ định một tập tin được định dạng đặc biệt có chứa các bài kiểm tra vị trí nhạy cảm; các thử nghiệm nhạy cảm với vị trí mặc định và các thử nghiệm nhạy cảm theo ngữ cảnh sẽ không được thực hiện.

Lệnh chỉ cho biết tệp trông như thế nào, không cho biết nó là gì (trong trường hợp tệp nhìn vào nội dung). Rất dễ đánh lừa chương trình bằng cách đưa một số ma thuật vào một tệp mà nội dung của nó không khớp với nó. Do đó, lệnh không thể được sử dụng như một công cụ bảo mật ngoài các tình huống cụ thể.

# 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 các đối tượng được chia sẻ (thư viện chia sẻ) được yêu cầu bởi mỗi chương trình hoặc đối tượng được chia sẻ được chỉ định trên dòng lệnh. Khi phần mềm đang được phát triển, chúng tôi cố gắng không phát minh lại bánh xe. Có một tập hợp các tác vụ phổ biến mà hầu hết các chương trình phần mềm yêu cầu, như in đầu ra hoặc đọc từ tiêu chuẩn trong hoặc mở tệp, v.v.

Tất cả các nhiệm vụ chung này được trừu tượng hóa trong một tập hợp các hàm chung mà mọi người sau đó có thể sử dụng thay vì viết các biến thể của riêng mình. Các hàm phổ biến này được đặt trong một thư viện gọi là libc hoặc 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 - hiển thị nội dung tệp ở dạng thập lục phân, thập phân, bát phân hoặc ascii. Tiện ích hexdump là một bộ lọc hiển thị các tệp được chỉ định hoặc đầu vào tiêu chuẩn nếu không có tệp nào được chỉ định, ở định dạng do người dùng chỉ định.

Mở các tệp không xác định trong Hexdump giúp bạn xem chính xác tệp đó chứa những gì. Bạn cũng có thể chọn xem biểu diễn ASCII của dữ liệu có trong tệp bằng cách sử dụng một số tùy chọn dòng lệnh. Điều này có thể giúp cung cấp cho bạn một số manh mối về loại tệp đó.

# 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 tự đọc

readelf hiển thị thông tin về một hoặc nhiều tệp đối tượng định dạng ELF. Các tùy chọn kiểm soát thông tin cụ thể nào sẽ hiển thị. ELF (Định dạng tệp thực thi và có thể liên kết) là định dạng tệp thống trị cho tệp thực thi hoặc tệp nhị phân, không chỉ trên Linux mà còn trên nhiều hệ thống UNIX. Có một tài liệu tham khảo về thông số kỹ thuật ELF thực tế khi sử dụng bản thân có thể rất hữu ích.

# 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 - hiển thị thông tin từ các tệp đối tượng. objdump hiển thị thông tin về một hoặc nhiều tệp đối tượng. Các tùy chọn kiểm soát thông tin cụ thể nào sẽ hiển thị. Thông tin này chủ yếu hữu ích cho các lập trình viên đang làm việc trên các công cụ biên dịch, trái ngược với các lập trình viên chỉ muốn chương trình của họ biên dịch và hoạt động. Trình biên dịch này tạo ra các lệnh ngôn ngữ máy tương đương với mã nguồn, sau đó có thể được CPU thực thi để thực hiện một tác vụ nhất định.

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

Trong bài viết này, chúng tôi đã giới thiệu cho các bạn cách phân tích tệp nhị phân trong Linux.

Nhận một máy chủ chuyên dụng dòng E5 kép hiệu suất cao và VPS KVM giá rẻ.


Cách tạo nhóm trong Linux

Cách tạo nhóm trong Linux

Nhóm được sử dụng để tổ chức người dùng và các đặc quyền của họ như đọc quyền viết và thực thi. Để thêm một Groud, lệnh là groupadd.

3 cách để kiểm tra việc sử dụng CPU trong Linux

3 cách để kiểm tra việc sử dụng CPU trong Linux

Giải thích rõ 3 cách để kiểm tra việc sử dụng CPU trong Linux. Sử dụng CPU đề cập đến việc sử dụng tài nguyên xử lý hoặc khối lượng công việc được xử lý bởi CPU.

Cách cài đặt và cấu hình DenyHosts trong CentOS 7

Cách cài đặt và cấu hình DenyHosts trong CentOS 7

DenyHosts được sử dụng rộng rãi như một giải pháp thay thế cho Fail2ban. Nếu có quá nhiều lần đăng nhập SSH không hợp lệ, nó sẽ giả định rằng các cuộc tấn công brute-force của nó hoặc

Gắn một đĩa mới vào máy chủ Linux

Gắn một đĩa mới vào máy chủ Linux

Chúng ta sẽ tìm hiểu cách gắn một đĩa mới vào máy chủ Linux. Đối với phần trình diễn này, chúng tôi đang sử dụng máy chủ đám mây CentOS 7. bây giờ mount phân vùng như hình dưới đây.

Dễ dàng cài đặt Fail2ban trên Ubuntu 20.04

Dễ dàng cài đặt Fail2ban trên Ubuntu 20.04

Giải thích rõ về cách dễ dàng cài đặt Fail2ban trên Ubuntu 20.04. Fail2ban được viết bằng ngôn ngữ lập trình Python và nó là mã nguồn mở, miễn phí. Cấu hình.

Cách cài đặt WireGuard VPN trên Ubuntu 20.04

Cách cài đặt WireGuard VPN trên Ubuntu 20.04

Giải thích rõ về cách cài đặt WireGuard VPN trên Ubuntu 20.04. WireGuard là một VPN cực kỳ đơn giản, nhanh chóng và hiện đại sử dụng mật mã hiện đại

Cách cài đặt OpenSSL 1.1.1d trong CentOS

Cách cài đặt OpenSSL 1.1.1d trong CentOS

OpenSSL là một bộ công cụ mạnh mẽ, cấp thương mại, đầy đủ tính năng cho các giao thức Bảo mật tầng truyền tải (TLS) & (SSL). Tìm hiểu cách cài đặt OpenSSL 1.1.1d trong CentOS

Cách cài đặt và cấu hình CSF trên CentOS 8

Cách cài đặt và cấu hình CSF trên CentOS 8

Cách cài đặt và cấu hình CSF trên máy chủ CentOS 8. ConfigServer Security & Firewall là một ứng dụng tường lửa, Đăng nhập / Phát hiện xâm nhập và Bảo mật (SPI).

Cấu hình quy tắc kiểm tra không được phản ánh - Cách khắc phục sự cố

Cấu hình quy tắc kiểm tra không được phản ánh - Cách khắc phục sự cố

Cấu hình quy tắc kiểm tra không được phản ánh? Tìm hiểu cách các kỹ sư hỗ trợ của chúng tôi khắc phục sự cố và giải quyết vấn đề. Tệp cấu hình quy tắc /etc/audit/rules.d/audit.rules

CloudLinux tải cao trên máy chủ

CloudLinux tải cao trên máy chủ

Trong bài viết này, chúng tôi sẽ tìm hiểu cách các kỹ sư hỗ trợ của chúng tôi sửa lỗi tải cao của CloudLinux trên máy chủ. Vui lòng đảm bảo rằng các giới hạn LVE của bạn được định cấu hình đúng cách.