Báo Cáo
Lập trình hệ thống và ghép nối thiết bị
Đề tài: Tìm hiểu PE file
Nhóm Thông Team thực hiện:
1. Trần Văn Dũng.
2. Nguyễn Mạnh Ninh.
3. Lê Quang Long.
4. Ngô Văn Thỉnh.
5. Bùi Đức Thuận.
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
1
Slide /15
Nội Dung
1
2
Giới thiệu chung về PE file.
Cấu trúc của PE file.
3
4
Kỹ thuật dịch ngược phần mềm.
Demo.
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
2
Slide /15
Giớ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.
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
3
Slide /15
Giớ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ớ.
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
4
Slide /15
Cấ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
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
5
Slide /15
Cấu trúc PE file
Dos MZ header
DOS Header là một cấu trúc được định nghĩa như sau:
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
6
Slide /15
Cấu trúc PE file
PE header
PE 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.
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
7
Slide /15
Cấu trúc PE file
PE header
Signature
File Header
Optional Header
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
8
Slide /15
Cấu trúc PE file
PE header => Data Directory
Signature
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:
File Header
Optional Header
Data Directory
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
9
Slide /15
Cấ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
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
10
Slide
/15
Cấ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.
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
11
Slide
/15
Kỹ thuật dịch ngược phần mềm
Khái niệ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.
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
12
Slide
/15
Kỹ thuật dịch ngược phần mềm
Một số 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).
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
13
Slide
/15
Phần 4: Demo
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
14
Slide
/15
Thank You !
LOGO
Nhóm: Thông_Team - AT8B
6/7/16
15
Slide
/15