Giới thiệu
Trong lab này, bạn sẽ học về lệnh readelf
của Linux và các ứng dụng thực tế của nó. Lệnh readelf
là một công cụ mạnh mẽ được sử dụng để phân tích nội dung của các tệp ELF (Executable and Linkable Format), là định dạng nhị phân tiêu chuẩn cho các tệp thực thi, thư viện chia sẻ và tệp đối tượng trên Linux và các hệ thống tương tự Unix. Thông qua lab này, bạn sẽ khám phá cách sử dụng cơ bản của readelf
, hiểu mục đích và chức năng của nó, và học cách phân tích các header và section của tệp ELF bằng lệnh này. Kiến thức thu được từ lab này có thể hữu ích cho các tác vụ như gỡ lỗi, kỹ thuật đảo ngược và hiểu cấu trúc của các tệp nhị phân.
Hiểu Mục Đích và Chức Năng của Lệnh readelf
Trong bước này, bạn sẽ học về mục đích và chức năng của lệnh readelf
trong Linux. Lệnh readelf
là một công cụ mạnh mẽ được sử dụng để phân tích nội dung của các tệp ELF (Executable and Linkable Format), là định dạng nhị phân tiêu chuẩn cho các tệp thực thi, thư viện chia sẻ và tệp đối tượng trên Linux và các hệ thống tương tự Unix.
Lệnh readelf
cung cấp thông tin chi tiết về tệp ELF, bao gồm header, section, segment và symbol của nó. Thông tin này có thể hữu ích cho các tác vụ như gỡ lỗi, kỹ thuật đảo ngược và hiểu cấu trúc của các tệp nhị phân.
Hãy bắt đầu bằng cách khám phá cách sử dụng cơ bản của lệnh readelf
:
readelf -h /bin/ls
Ví dụ đầu ra:
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: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x4047e0
Start of program headers: 64 (bytes into file)
Start of section headers: 6472 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 9
Size of section headers: 64 (bytes)
Number of section headers: 28
Section header string table index: 27
Đầu ra hiển thị các trường khác nhau của header tệp ELF, cung cấp thông tin về loại tệp, kiến trúc, điểm vào và các metadata khác. Thông tin này có thể hữu ích để hiểu cấu trúc và mục đích của tệp nhị phân.
Trong bước tiếp theo, bạn sẽ khám phá cách sử dụng cơ bản của lệnh readelf
chi tiết hơn.
Khám Phá Cách Sử Dụng Cơ Bản của Lệnh readelf
Trong bước này, bạn sẽ khám phá cách sử dụng cơ bản của lệnh readelf
và học cách trích xuất các loại thông tin khác nhau từ các tệp ELF.
Đầu tiên, hãy xem xét các tùy chọn cơ bản có sẵn với lệnh readelf
:
readelf --help
Thao tác này sẽ hiển thị danh sách tất cả các tùy chọn có sẵn và mô tả của chúng. Một số tùy chọn được sử dụng phổ biến nhất bao gồm:
-h
: Hiển thị thông tin header của tệp ELF-S
: Hiển thị các section trong tệp ELF-l
: Hiển thị các program header-s
: Hiển thị bảng symbol-d
: Hiển thị section động-r
: Hiển thị các relocation entry
Bây giờ, hãy thử một số tùy chọn này trên một tệp ELF mẫu, chẳng hạn như tệp nhị phân /bin/ls
:
readelf -S /bin/ls
Ví dụ đầu ra:
There are 28 section headers, starting at offset 0x1998:
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[ 0] NULL 0000000000000000 00000000
0000000000000000 0000000000000000 0 0 0
[ 1] .interp PROGBITS 0000000000400238 00000238
000000000000001c 0000000000000000 A 0 0 1
[ 2] .note.gnu.build-i NOTE 0000000000400254 00000254
0000000000000024 0000000000000000 A 0 0 4
...
Lệnh này hiển thị các section header của tệp ELF /bin/ls
, cung cấp thông tin về các section khác nhau, chẳng hạn như tên, loại, địa chỉ và kích thước của chúng.
Bạn cũng có thể sử dụng lệnh readelf
để hiển thị thông tin khác, chẳng hạn như các program header, section động và bảng symbol. Hãy thử các lệnh sau:
readelf -l /bin/ls
readelf -d /bin/ls
readelf -s /bin/ls
Khám phá đầu ra của các lệnh này để hiểu các loại thông tin khác nhau có thể được trích xuất từ tệp ELF bằng lệnh readelf
.
Phân Tích Header và Section của Tệp ELF Bằng readelf
Trong bước này, bạn sẽ học cách sử dụng lệnh readelf
để phân tích chi tiết hơn các header và section của tệp ELF.
Hãy bắt đầu bằng cách xem xét header tệp ELF của tệp nhị phân /bin/ls
:
readelf -h /bin/ls
Ví dụ đầu ra:
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: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x4047e0
Start of program headers: 64 (bytes into file)
Start of section headers: 6472 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 9
Size of section headers: 64 (bytes)
Number of section headers: 28
Section header string table index: 27
Đầu ra này cung cấp thông tin chi tiết về header tệp ELF, bao gồm class tệp, mã hóa dữ liệu, loại, kiến trúc máy và các offset và kích thước khác nhau.
Tiếp theo, hãy khám phá các section của tệp ELF:
readelf -S /bin/ls
Ví dụ đầu ra:
There are 28 section headers, starting at offset 0x1998:
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[ 0] NULL 0000000000000000 00000000
0000000000000000 0000000000000000 0 0 0
[ 1] .interp PROGBITS 0000000000400238 00000238
000000000000001c 0000000000000000 A 0 0 1
[ 2] .note.gnu.build-i NOTE 0000000000400254 00000254
0000000000000024 0000000000000000 A 0 0 4
...
Lệnh này hiển thị các section header, cung cấp thông tin về các section khác nhau trong tệp ELF, chẳng hạn như tên, loại, địa chỉ, kích thước và các thuộc tính khác của chúng.
Bạn có thể khám phá thêm các section bằng cách sử dụng lệnh readelf -e
, lệnh này hiển thị đầy đủ thông tin tệp ELF, bao gồm các program header, section header và bảng symbol:
readelf -e /bin/ls
Lệnh này sẽ cung cấp một cái nhìn toàn diện về tệp ELF, cho phép bạn hiểu chi tiết cấu trúc và nội dung của nó.
Tóm tắt
Trong lab này, bạn đã học về mục đích và chức năng của lệnh readelf
trong Linux. Lệnh readelf
là một công cụ mạnh mẽ được sử dụng để phân tích nội dung của các tệp ELF (Executable and Linkable Format), là định dạng nhị phân tiêu chuẩn cho các tệp thực thi, thư viện chia sẻ và tệp đối tượng trên Linux và các hệ thống tương tự Unix. Bạn đã khám phá cách sử dụng cơ bản của lệnh readelf
và học cách phân tích các header và section của tệp ELF bằng nó. Thông tin này có thể hữu ích cho các tác vụ như gỡ lỗi, kỹ thuật đảo ngược và hiểu cấu trúc của các tệp nhị phân. Systemadmin có thể sử dụng kiến thức này để quản lý hệ thống Linux hiệu quả hơn, đặc biệt khi làm việc với các tệp nhị phân và thư viện chia sẻ. Việc hiểu cấu trúc ELF giúp cho systemadmin dễ dàng xác định và khắc phục sự cố, tối ưu hóa hiệu suất hệ thống và đảm bảo an ninh.