Lệnh readelf
là lệnh trong Linux giúp phân tích sâu các file nhị phân định dạng ELF – thường dùng cho file thực thi, thư viện chia sẻ và core dump. Trong bài viết này, bạn sẽ hiểu rõ cách hoạt động của lệnh readelf
, cú pháp sử dụng, cùng 10 ví dụ thực tế như kiểm tra cấu trúc ELF, hiển thị symbol table hay dynamic section. Bên cạnh đó, mình cũng giới thiệu giải pháp lưu trữ tốc độ cao từ Vietnix – giúp bạn đảm bảo website luôn chạy ổn định. Cuối bài sẽ có phần FAQ để giải đáp các thắc mắc thường gặp về readelf
.
Điểm chính cần nắm
- Lệnh readelf trong Linux là gì?: Giới thiệu lệnh
readelf
, công dụng và khi nào nên sử dụng để phân tích file ELF. - Cú pháp lệnh readelf: Trình bày cú pháp tổng quát và cách sử dụng các tùy chọn phổ biến của
readelf
. - 10 ví dụ sử dụng lệnh readelf chi tiết: Tổng hợp 10 ví dụ thực tế để minh họa cách dùng
readelf
hiệu quả. - Vietnix – Giải pháp lưu trữ hiệu suất cao cho website ổn định và nhanh chóng: Giới thiệu dịch vụ lưu trữ tốc độ cao và bảo mật mạnh mẽ từ Vietnix.
- FAQ: Giải đáp các câu hỏi thường gặp liên quan đến lệnh
readelf
trong Linux.
Lệnh readelf trong Linux là gì?
Lệnh readelf
là một công cụ dòng lệnh trong Linux dùng để hiển thị thông tin chi tiết từ các file ELF (Executable and Linkable Format) — định dạng phổ biến cho các file thực thi, mã đối tượng, thư viện chia sẻ và file core dump trên các hệ thống dựa trên Unix.

readelf
giúp bạn phân tích cấu trúc bên trong của file ELF bằng cách hiển thị các phần quan trọng như:
- Core Notes (thông tin metadata như build ID)
- ELF Header (tiêu đề chính)
- Section Headers (phân vùng dữ liệu)
- Program Headers (phân đoạn thực thi)
- Symbol Table (bảng ký hiệu)
- Relocation Information (thông tin tái định vị)
- Dynamic Linking (liên kết động)
Một số đặc điểm chính của readelf
:
- Không yêu cầu quyền root để sử dụng.
- Có thể hiển thị tiêu đề ELF, danh sách section, symbol table, relocation, dynamic linking, core notes, v.v.
- Là công cụ đọc tĩnh (không thực thi file).
Khi nào nên dùng readelf
?
- Kiểm tra nhanh một file có phải là ELF không.
- Phân tích lỗi biên dịch hoặc liên kết.
- Tìm hiểu chi tiết về cấu trúc nhị phân của chương trình.
- Phục vụ công việc kiểm tra bảo mật, phân tích mã độc, hoặc debug hệ thống.
Cú pháp lệnh readelf
Cú pháp cơ bản
readelf [tùy_chọn] <file_ELF>
Trong đó:
[tùy_chọn]
: Các tùy chọn để chỉ định thông tin cần hiển thị (ví dụ:-h
,-S
,-s
,…).<file_ELF>
: Tên file ELF mà bạn muốn phân tích (file thực thi, thư viện.so
, hoặc file object.o
).
Ví dụ đơn giản:
readelf -h elf_file
Lệnh trên hiển thị ELF header của file elf_file
.
Một số tùy chọn phổ biến
Tùy chọn | Mô tả |
---|---|
-h | Hiển thị ELF header – chứa thông tin tổng quát về file ELF. |
-S | Liệt kê tất cả các section trong file ELF cùng địa chỉ, kích thước, kiểu và thuộc tính. |
-l | Hiển thị program headers – mô tả các phân đoạn được sử dụng khi thực thi chương trình. |
-s | Hiển thị bảng ký hiệu (symbol table) – các ký hiệu được định nghĩa và sử dụng. |
-r | Hiển thị thông tin relocation – cách các địa chỉ trong file được điều chỉnh khi chạy. |
-d | Hiển thị dynamic section – chứa thông tin liên quan đến liên kết động. |
-n | Hiển thị core notes – metadata như Build ID , dùng trong debug. |
-V | Hiển thị phiên bản của lệnh readelf . |
--help | Hiển thị trợ giúp và danh sách tất cả các tùy chọn có sẵn. |
readelf
10 ví dụ sử dụng lệnh readelf chi tiết
Hiển thị trợ giúp của lệnh readelf
Trước khi đi sâu vào các tùy chọn, bạn nên xem qua danh sách các flag mà readelf
hỗ trợ. Lệnh --help
là cách nhanh nhất để nắm được toàn bộ chức năng.
readelf --help

Lệnh sẽ in ra danh sách tất cả các tùy chọn mà readelf
hỗ trợ, ví dụ:
-h
: hiển thị ELF header-S
: liệt kê các section-s
: xem bảng ký hiệu-d
: hiển thị phần dynamic-r
: phần relocation- v.v.
Kiểm tra xem file có phải là ELF
Trước khi dùng readelf
, cần chắc chắn file mà bạn đang phân tích thực sự là một ELF file. Lệnh file
sẽ giúp bạn kiểm tra điều này.
file hello
Kết quả ví dụ:
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, ...
Nếu có chữ “ELF”, nghĩa là file đủ điều kiện để phân tích bằng readelf
. Nếu không phải ELF, readelf
sẽ trả về lỗi định dạng.

Tạo file ELF từ mã nguồn C
Muốn thực hành với readelf
, bạn cần một ELF file. Cách đơn giản nhất là biên dịch một chương trình C cơ bản.
gcc hello.c -o hello
Lệnh trên sử dụng GCC để biên dịch file hello.c
thành file thực thi hello
. file này là ELF và có thể dùng ngay với readelf
.
Ví dụ nội dung hello.c
đơn giản:
#include <stdio.h>
int main() {
printf("Hello, ELF!\n");
return 0;
}
Hiển thị ELF Header
ELF header là phần đầu của file, chứa thông tin quan trọng như loại file, kiến trúc CPU, điểm bắt đầu thực thi, số lượng section và program header,…
readelf -h hello

Ví dụ kết quả:
ELF Header:
Magic: 7f 45 4c 46 ...
Class: ELF64
Data: 2's complement, little endian
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Entry point address: 0x1149
...
Bạn có thể kiểm tra:
- Kiểu kiến trúc (
x86-64
) - Entry point: nơi chương trình bắt đầu thực thi trong bộ nhớ
- Loại file: executable, shared object, object file, v.v.
Hiển thị danh sách các section trong ELF
Section là các vùng trong file ELF chứa mã máy, dữ liệu, tên hàm, chuỗi, symbol,… Mỗi section có tên, kích thước và địa chỉ riêng.
readelf -S hello

Ví dụ đầu ra:
There are 29 section headers, starting at offset 0x1e20:
[Nr] Name Type Address Offset
[ 1] .text PROGBITS 0000000000001120 00000120
[ 2] .data PROGBITS 0000000000003000 00001000
...
Các section thường gặp:
.text
: chứa mã thực thi (code).data
: chứa dữ liệu khởi tạo.bss
: chứa biến chưa khởi tạo.symtab
: bảng ký hiệu.strtab
: bảng chuỗi
Hiển thị bảng ký hiệu (symbol table)
Bảng ký hiệu hiển thị các biến, hàm, đối tượng được định nghĩa hoặc tham chiếu trong ELF. Hữu ích khi debug hoặc phân tích mã nguồn biên dịch.
readelf -s hello

Ví dụ:
Symbol table '.symtab' contains 64 entries:
Num: Value Size Type Bind Vis Ndx Name
10: 0000000000001149 23 FUNC GLOBAL DEFAULT 13 main
Ý nghĩa:
main
: tên hàmValue
: địa chỉ hàmSize
: kích thướcType
: loại (FUNC – hàm)Bind
: GLOBAL (phạm vi toàn cục)Ndx
: số index của section chứa ký hiệu
Hiển thị core notes
Core Notes chứa thông tin phụ trợ như Build ID, thường dùng để gỡ lỗi hoặc kiểm tra danh tính file nhị phân.
readelf -n hello

Ví dụ:
Notes at offset 0x00000174 with length 0x00000024:
Owner Data size Description
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
Build ID: 3f6a9f2734e91a8fabcad567ad9e41a29e92e882
Build ID giúp bạn xác định file có đúng với phiên bản gốc đã build ra không, hoặc tra cứu thông tin symbol tương ứng khi debug.
Hiển thị phần relocation
Relocation dùng để cập nhật địa chỉ bộ nhớ trong quá trình liên kết. Thường thấy trong file .o
hoặc .so
.
readelf -r hello

Nếu ELF chứa mục relocation, kết quả sẽ có dạng:
Relocation section '.rela.text' at offset ...
Offset Info Type Sym. Value Sym. Name
000000000014 000100000006 R_X86_64_GLOB_DAT 000000000000 puts
Nếu là file thực thi không có relocation, sẽ thấy: There are no relocations in this file.
Hiển thị dynamic section
Dynamic section chứa thông tin về liên kết động: thư viện cần thiết, tên thư viện, hàm init/fini,…
readelf -d hello

Ví dụ:
Dynamic section at offset 0x1a90 contains 25 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
Ý nghĩa:
libc.so.6
: chương trình cần thư viện C chuẩn để chạyNEEDED
: thư viện được liên kết
Kiểm tra phiên bản readelf
Phiên bản readelf
có thể ảnh hưởng đến cú pháp, tính năng hoặc kết quả trả về, nên việc biết rõ phiên bản đang dùng là rất cần thiết.
readelf -v

Ví dụ:
readelf (GNU Binutils for Ubuntu) 2.40
Thông tin này cho biết phiên bản readelf
đi kèm với bản phát hành binutils
. Nếu bạn gặp lỗi không tương thích, hãy kiểm tra phiên bản này đầu tiên.
Vietnix – Giải pháp lưu trữ hiệu suất cao cho website ổn định và nhanh chóng
Nếu bạn đang tìm kiếm một nền tảng lưu trữ mạnh mẽ để đảm bảo website luôn vận hành mượt mà, Vietnix là lựa chọn đáng tin cậy. Với các dịch vụ hosting và VPS chất lượng cao, Vietnix mang đến hiệu suất ổn định, tốc độ truy cập nhanh, bảo mật tiên tiến và hệ thống giám sát 24/7.
Vietnix không chỉ đầu tư vào hạ tầng máy chủ hiện đại đặt tại trung tâm dữ liệu tiêu chuẩn quốc tế, mà còn sở hữu đội ngũ kỹ thuật giàu kinh nghiệm, luôn sẵn sàng hỗ trợ mọi vấn đề kỹ thuật trong quá trình vận hành. Dù bạn cần tối ưu tốc độ website, đảm bảo tính ổn định hay tăng cường bảo mật, Vietnix đều có giải pháp phù hợp.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
Làm cách nào để hiển thị bảng ký hiệu (symbol table) bằng lệnh readelf?
Sử dụng lệnh readelf -s <ten_tap_tin_ELF>
để xem các biểu tượng (symbol) được định nghĩa và tham chiếu trong file ELF.
readelf có được cài sẵn trong Ubuntu không?
Có, thường đi kèm với gói binutils
. Nếu chưa có, bạn có thể cài bằng sudo apt install binutils
.
Sự khác biệt giữa readelf và objdump là gì?
readelf
chỉ dùng để phân tích file ELF, trong khi objdump
hỗ trợ nhiều định dạng nhị phân hơn và có thể hiển thị mã máy disassembly.
Lệnh readelf có thể được dùng để kiểm tra malware không?
Có, đặc biệt hữu ích trong việc phân tích symbol table, relocation, dynamic linking để phát hiện hành vi bất thường.
readelf có thể hoạt động mà không cần quyền root không?
Có, miễn là người dùng có quyền đọc file ELF đó.
readelf có thể giúp phát hiện backdoor ẩn trong binary như thế nào?
Bằng cách xem symbol table, dynamic section và relocation, bạn có thể phát hiện thư viện không bình thường hoặc hàm ẩn được liên kết.
Làm sao để phân biệt ELF 32-bit và 64-bit bằng readelf?
Dùng readelf -h <file>
, kiểm tra trường “Class”: ELF32
hoặc ELF64
.
Có thể kết hợp readelf với bash script để quét nhiều ELF không?
Có, bạn có thể viết script lặp qua thư mục và dùng readelf để thu thập thông tin tự động.
readelf có thể xem được địa chỉ hàm main không?
Có thể, nếu symbol chưa bị strip, dùng readelf -s <file>
rồi tìm dòng có tên “main”.
Lời kết
Khi nắm vững cách sử dụng lệnh readelf
, bạn có thể dễ dàng phân tích cấu trúc nội bộ của file ELF, phục vụ tốt cho việc debug, tối ưu hiệu suất hoặc kiểm tra bảo mật. Nếu bạn có bất kỳ thắc mắc nào liên quan đến readelf
hoặc cách sử dụng trong thực tế, đừng ngần ngại để lại câu hỏi dưới phần bình luận. Ngoài ra, bạn cũng có thể liên hệ với đội ngũ Vietnix để được tư vấn giải pháp lưu trữ phù hợp. Hãy chủ động khai thác công cụ mạnh mẽ này để làm chủ hệ thống Linux của bạn.
Mọi người cũng xem: