Tất cả các file có thể thực thi được trên Win32 ngoại trừ các tập tin VxDs và Dlls 16bit đều sử dụng định dạng PE... Giới thiệu chung Lý do có PE: PE Portable Executable được chọn
Trang 1Báo Cáo Lập trình hệ thống và ghép nối thiết bị
Nhóm Thông Team thực hiện:
1 Trần Văn Dũng.
2 Nguyễn Mạnh Ninh.
Đề tài: Tìm hiểu PE file
Trang 2Nội Dung
Giới thiệu chung về PE file.
1
Cấu trúc của PE file.
Kỹ thuật dịch ngược phần mềm.
2
3
Demo.
4
Trang 3Giới thiệu chung
PE file là gì?
PE là từ viết tắt của Portable Executable
PE là định dạng riêng của Win32
Định dạng này được thiết kế bởi Microsoft vào năm 1993 và được chuẩn hóa bởi Tool
Interface Standard Committee (bao gồm Microsoft, Intel, Borland, Watcom, IBM và các tập đoàn khác)
Tất cả các file có thể thực thi được trên Win32 (ngoại trừ các tập tin VxDs và Dlls 16bit)
đều sử dụng định dạng PE
Trang 4Giới thiệu chung
Lý do có PE:
PE (Portable Executable) được chọn lựa là vì mục đích phải có một định dạng file phổ biến
(common file format) cho hầu hết các loại hệ điều hành Windows, hầu hết các loại CPUs hỗ trợ Windows khi chạy
Khi hệ điều hành muốn thực thi 1 file PE, nó sẽ dùng 1 trình gọi là Windows Loader (hay còn
gọi là PE Loader) để tải file PE vào vùng nhớ (memory) Việc tải này không đơn giản như là việc copy y nguyên file vào vùng nhớ, mà nó thực sự là sắp đặt (mapping) dữ liệu file vào vùng nhớ Tức là có thể có 1 số phần trong file PE trên đĩa (disk) sẽ không được mapping (sắp đặt) vào vùng nhớ
Trang 5Cấu trúc PE file
Dos header
Vùng DOS MZ header chiếm 64 bytes đầu tiên của file
Được dùng khi bạn chạy file đó trên nền DOS
DOS stub là một chương trình DOS EXE nhỏ dung để hiển thị thông báo lỗi
DOS stub thường sử dụng hàm 9 của ngắt 21h để hiện thông báo
Trang 6Cấu trúc PE file
DOS Header là một cấu trúc được định nghĩa như sau:
Trang 7PE header là một thuật ngữ chung đại diện cho cấu trúc IMAGE_NT_HEADERS:
Signature chứa những giá trị 50h, 45h, 00h, 00h
FileHeader bao gồm 20 bytes tiếp theo, chứa thông tin sơ đồ bố trí vật lý và những đặc tính
của file.
OptionalHeader luôn luôn hiện diện với 224 bytes tiếp theo, chứa thông tin sơ đồ Logic bên
trong của file PE.
Cấu trúc PE file
Trang 8Cấu trúc PE file
Signature
File Header
Optional Header
Trang 9Cấu trúc PE file
PE header => Data Directory
Signature
File Header
Data Directory chiếm 128 bytes cuối cùng của OptionalHeader
Data Directory là 1 mảng có 16 phần tử IMAGE_DATA_DIRECTORY:
Trang 10Cấu trúc PE file
Section table
Section Table là một mảng của những cấu trúc IMAGE_SECTION_HEADER
Mỗi phần tử chứa thông tin của 1 section trong PE file (thuộc tính, offset ảo).
Số lượng sections chính là được khai bào trong NumberOfSections trong phần FileHeader
Trang 11Cấu trúc PE file
PE File Sections
PE File Sections là những sections chứa nội dung chính của file, bao gồm code, data, resources và những thông tin khác của file thực thi
Mỗi sections có một Header và một Body, phần Header thì được chứa trong Section Table nhưng phần body thì không có 1 cấu trúc file nào cứng rắn
Một chương trình ứng dụng đặc thù trên HĐH Windows NT có 9 section được định nghĩa trước có tên là: text, bss, rdata, rsrc, edata, idata, pdata và debug
Trang 12Kỹ thuật dịch ngược phần mềm
Là quá trình tìm kiếm, chia sẻ thông tin (nguyên lý, code…) hay thiết kế từ các phần mềm ứng dụng.
Giúp ta phân tích tìm hiểu được cấu trúc của phần mềm như thế nào, để phát triển sản phẩm hoàn thiện
hơn trong tương lai
Dịch ngược phần mềm cần sự kết hợp của kĩ năng và cả hiểu biết về máy tính và phát triển phần mềm,
sự chuẩn bị cần thiết nhất là sự ham hiểu biết và kiên trì học hỏi
Tuy nhiên dịch ngược cũng là phương pháp mà các hacker sử dụng để can thiệp vào phần mềm trái
phép, làm thay đổi ý nghĩa công dụng của sản phẩm
Trang 13Kỹ thuật dịch ngược phần mềm
OllyDBG: hay còn gọi tắt là Olly là công cụ debug rất phổ biến Nhờ giao diện trực quan và dễ sử dụng nên Olly
phù hợp với người dùng ở mọi trình độ khác nhau.
Net Reflector: sử dụng cho các chương trình chạy trên nền tảng NET Framework
IDA: là công cụ disassembler và debuger đa nền tảng, có thể sử dụng trên nền tảng Windows, Linux or Mac OS
X
Hex Editor: Trong quá trình thực hiện công việc Reverse, ta cần đến các công cụ Hex Editor để đọc và chỉnh sửa
các file dưới định dạng hex.
Một số công cụ khác: 010 Hex Editor (phần mềm trả phí), Winhex (phần mềm miễn phí), CFF Explorer VIII (1
chương trình nằm trong bộ công cụ Explorer Suite).
Trang 14Phần 4: Demo
Trang 15Thank You !