Định dạng tệp thực thi di động của Windows là gì?
Windows Portable Executable (PE) là định dạng tệp gốc của Windows dành cho các tệp thực thi và các loại tệp nhị phân khác. Định dạng tệp PE được thiết kế độc lập với nền tảng, do đó, nó có thể được sử dụng trên bất kỳ máy Windows nào chạy cùng phiên bản hệ điều hành và kiến trúc bộ xử lý mà tệp được biên dịch.
Vì vậy, hãy cùng nhau mổ xẻ định dạng tệp Windows PE và tìm hiểu về cấu trúc cũng như các thành phần cấu thành của nó.
Mục Lục
Tệp thực thi di động Windows là gì?
Trước khi khám phá định dạng Windows Portable Executable, điều quan trọng là phải làm rõ những điều cơ bản. Hãy lùi lại một bước và tìm hiểu về khái niệm cơ bản của Windows PE—COFF.
Khi bạn biên dịch mã nguồn thành một chương trình, trình biên dịch sẽ tạo một tệp đối tượng (.obj). Tệp đối tượng này chứa các hướng dẫn cho máy tính ở định dạng nhị phân.
COFF hoặc Định dạng tệp đối tượng chung là một tập hợp các quy ước được tiêu chuẩn hóa để biểu diễn các lệnh nhị phân. COFF giúp duy trì khả năng tương thích đa nền tảng vì tất cả các định dạng tệp COFF đều tuân theo cùng một bộ quy tắc và quy ước để tổ chức mã và dữ liệu. Mặc dù COFF ban đầu được phát triển để sử dụng trên các hệ thống *NIX, nhưng giờ đây nó đã phổ biến trên tất cả các nền tảng.
Định dạng tệp Windows Portable Executable (PE) là một bản sửa đổi của COFF và đã được phát triển để sử dụng riêng trên các hệ thống Windows 32-bit và 64-bit. Không giống như COFF cung cấp định dạng tiêu chuẩn hóa cho tệp đối tượng, Windows PE cung cấp định dạng tiêu chuẩn hóa cho tệp thực thi và tệp thư viện.
Nó chứa các phần và tiêu đề cung cấp thông tin về tệp thực thi được đề cập và giúp trình tải hệ thống quản lý dữ liệu liên quan đến tệp thực thi. Các tiêu đề trong tệp PE giúp trình tải hệ thống ánh xạ tệp vào bộ nhớ, giải quyết các phụ thuộc như xuất/nhập API, quản lý tài nguyên và chuẩn bị tệp để thực thi.
Linux cũng có phiên bản COFF riêng; nó được gọi là Tệp liên kết có thể thực thi hay nói ngắn gọn là tệp nhị phân ELF. Bạn có thể kiểm tra xem một tệp có phải là ELF hay không bằng cách chạy lệnh lệnh tập tin trên Linux với tên tệp làm đối số đầu tiên.
Cấu trúc của Windows Portable Executable
Định dạng tệp thực thi di động bao gồm một số thành phần, mỗi thành phần có một mục đích cụ thể. Những thành phần này bao gồm:
- Tiêu đề phần, mô tả bố cục và đặc điểm của từng phần của tệp Bản thân các phần, chứa mã thực thi, dữ liệu và tài nguyên.
- Tiêu đề PE, cung cấp thông tin về cấu trúc và yêu cầu tổng thể của tệp.
- Tiêu đề DOS, bao gồm một chương trình nhỏ chạy khi tệp được thực thi trên hệ thống DOS.
- Và cuối cùng, tiêu đề phần PE, mô tả vị trí và thuộc tính của từng phần trong tệp.
Nhìn chung, các thành phần này hoạt động cùng nhau để tạo ra một định dạng có cấu trúc cho phép hệ điều hành tải, thực thi và quản lý mã thực thi có trong tệp một cách chính xác. Hãy tìm hiểu chính xác chức năng của từng thành phần.
Phần đầu tiên của tệp PE được gọi là Tiêu đề DOS. Một lượng nhỏ mã thực thi được lưu trữ trong tiêu đề DOS cũng có thể chạy trên máy DOS.
Mã này còn được gọi là sơ khai MS-DOS và được sử dụng để đưa ra thông báo lỗi trên các hệ thống không hỗ trợ tệp PE.
Tiêu đề Portable Executable cung cấp thông tin về tệp thực thi, chẳng hạn như dung lượng của tệp, vị trí của các phần khác nhau và tài nguyên mà tệp thực thi cần. Tiêu đề PE cũng có thông tin về loại tệp thực thi, cho dù đó là tệp .DLL của Windows hay .EXE.
Các phần được triển khai để sắp xếp nhiều thành phần của tệp thực thi, chẳng hạn như mã, dữ liệu và tài nguyên như chuỗi văn bản, hình ảnh, v.v. Các tiêu đề phần bao gồm thông tin về kích thước và vị trí của từng phần, cũng như bất kỳ cờ liên quan nào.
Các cờ được liên kết với mỗi tiêu đề phần có thể cho biết các thuộc tính khác nhau của phần đó, chẳng hạn như phần đó có thể thực thi, có thể ghi hoặc có thể đọc được hay không. Các cờ này giúp hệ điều hành tải và quản lý đúng nội dung của từng phần trong khi thực hiện chương trình.
phần
Bản thân các phần bao gồm mã, dữ liệu và tài nguyên thực của tệp thực thi. Mỗi phân đoạn được căn chỉnh theo một ranh giới bộ nhớ nhất định và có một bộ thuộc tính riêng ảnh hưởng đến cách hệ điều hành xử lý nó.
Bây giờ bạn đã biết tất cả về định dạng tệp thực thi di động của Windows
Windows Portable Executable là một định dạng tệp mạnh mẽ và linh hoạt được sử dụng để tạo ra nhiều ứng dụng Windows và thành phần hệ thống. Bằng cách hiểu cấu trúc của định dạng tệp PE, nhà phát triển có thể xây dựng các ứng dụng hiệu quả tận dụng các đặc điểm riêng biệt của Windows.
Bên cạnh việc hiểu sâu về nền tảng mà ứng dụng của bạn sẽ chạy trên đó, bằng cách tuân theo một số phương pháp mã hóa tốt tiêu chuẩn, bạn sẽ có thể tối đa hóa chất lượng của ứng dụng bất kể ứng dụng chạy trên nền tảng nào.