Email Doanh NghiệpSSLFirewall Anti DDoSTối ưu tốc độ website

NỘI DUNG

Banner blog lễ 30.4 và 1.5

Lệnh readelf trong Linux: Cách sử dụng và ví dụ chi tiết từ A đến Z

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:21/05/2025
Lượt xem

Đánh giá

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.

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

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ọnMô tả
-hHiển thị ELF header – chứa thông tin tổng quát về file ELF.
-SLiệ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.
-lHiển thị program headers – mô tả các phân đoạn được sử dụng khi thực thi chương trình.
-sHiển thị bảng ký hiệu (symbol table) – các ký hiệu được định nghĩa và sử dụng.
-rHiển thị thông tin relocation – cách các địa chỉ trong file được điều chỉnh khi chạy.
-dHiển thị dynamic section – chứa thông tin liên quan đến liên kết động.
-nHiển thị core notes – metadata như Build ID, dùng trong debug.
-VHiển thị phiên bản của lệnh readelf.
--helpHiển thị trợ giúp và danh sách tất cả các tùy chọn có sẵn.
Các tùy chọn phổ biến của lệnh readelf

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
image 222
Lệnh readelf trong Linux: Cách sử dụng và ví dụ chi tiết từ A đến Z 28

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.

Trong trường hợp này tên tệp là " elf_file" (Nguồn: Internet)
Trong trường hợp này tên file là ” elf_file” (Nguồn: Internet)

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
Hiển thị ELF Header
Hiển thị ELF Header

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
Hiển thị danh sách các section trong ELF
Hiển thị danh sách các section trong ELF

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
Hiển thị bảng ký hiệu (symbol table)
Hiển thị bảng ký hiệu (symbol table)

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àm
  • Value: địa chỉ hàm
  • Size: kích thước
  • Type: 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
Hiển thị core notes
Hiển thị core notes

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
Hiển thị phần relocation
Hiển thị phần relocation

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
Hiển thị dynamic section
Hiển thị dynamic section

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ạy
  • NEEDED: 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
Kiểm tra phiên bản readelf
Kiểm tra phiên bản readelf

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ụ hostingVPS 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:

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi sinh nhật
Nhanh tay, số lượng có hạn!
17/05/2025 - 22/06/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG