Tải bản đầy đủ (.ppt) (37 trang)

Đồ Án Tìm Hiểu Cấu Trúc File Thực Thi Trong Windows Và Vấn Đề Sửa Đổi Các Tài Nguyên Trên File

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (464.78 KB, 37 trang )

BÁO CÁO ĐỒ ÁN
MÔN HỌC C4W
TÌM HIỂU CẤU TRÚC FILE
THỰC THI TRONG
WINDOWS VÀ VẤN ĐỀ SỬA
ĐỔI CÁC TÀI NGUYÊN
TRÊN FILE.
Sv thực hiện : Phạm Trọng Tôn - Triệu Ngọc Toàn

1


NỘI DUNG :


Phần 1: Giới thiệu đề tài và chương trình VIETNAM Ease Controls.



Phần 2: Tổng quan về định dạng file thực thi PE (PE File Format).



Phần 3: Vấn đề truy xuất và sửa đổi các Resource trong file.

2


Phần 1 : Giới thiệu đề tài và
chương trình VE Controls.







Hiện nay, ở Việt Nam có rất nhiều ứng dụng được viết trên
nền của hệ điều hành Windows của hãng Microsoft. Số các
ứng dụng này chiếm khoảng hơn 90% số các phần mềm trên
thế giới hiện nay.
Phần lớn các ứng dụng này đều sử dụng ngôn ngữ tiếng Anh
làm giao diện chính cho chương trình của mình. Rất ít
chương trình có khả năng hỗ trợ đa ngôn ngữ và đặc biệt là
Tiếng Việt.
Điều này đã gây không ít khó khăn cho những người không
chuyên tin học khi sử dụng máy tính. Đặc biệt trên máy tính
còn tồn tại một số thuật ngữ cũng như những thông báo khá
khó hiểu mà đối với một số người có trình độ tiếng Anh nhất
định cũng sẽ gặp phải.
3




Để khắc phục những khó khăn này chính phủ và các công ty
phần mềm đã và đang cố gắng xây dựng các phần mềm giao
diện tiếng Việt, nhằm phổ cập hoá CNTT và phát triển ngành
CNTT nước nhà. Tuy nhiên cách này khá tốn kém và thường
không hiệu quả do chất lượng các phần mềm trong nước còn
chưa cao.





VD : HĐH Vietkey Linux được Việt Hóa từ HĐH Linux có mã
nguồn mở.

Hiện nay trên mạng tồn tại một số phần mềm thương mại cho
phép người dùng có thể sửa chữa lại giao diện chương trình từ
các file thực thi như Resource Hacker, Restorator, PE
Explorer… Với các chương trình này bạn phải sửa chữa từng
từ một trong file do đó mất rất nhiều thời gian và nhàm chán
do phải lặp đi lặp lại trên cùng một thao tác.
4


VEControls

5


Bảng tra từ

6


Thông tin về file

7



Với VEControls:








Việc Việt hóa các controls chuẩn sẽ được thực hiện một
cách tự động dựa trên bộ từ điển xây dựng sẵn.
Tiết kiệm được rất nhiều thời gian so với cách làm thủ
công, chính xác và hiệu quả.
Thực hiện những sửa đổi ngay trên file thực thi (không
cần source code) và cho ra kết quả là một file thực thi có
thể chạy được ngay.
Có khả năng mở rộng được cho nhiều ngôn ngữ khác
nhau. Điều này sẽ làm tiết kiệm rất nhiều tiền bạc và công
sức cho việc bản địa hóa phần mềm.
8


Một số kết quả đạt được

9


Sau khi Việt hóa bằng VEControls

10



Sau khi chuyển sang tiếng Pháp

11


Với phần mềm Flashget

12


Phần 2:Tổng quan về định dạng
file thực thi PE (PE File Format).


Kể từ HĐH Windows NT 3.1, Microsoft đưa ra một định dạng tập tin
mới cho các file thưc thi của họ. Đó là định dạng tập tin thực thi
Portable Executable (PE).



Về bản chất thì định dạng của tập tin PE được rút ra chủ yếu từ định
dạng COFF (Common Object File Format) rất phổ biến trên hệ điều
hành UNIX®.

13


Cấu trúc tổng quát của vùng PE Header


14


Các thành phần chính của PE Header



MS-DOS Header



Real-Mode Stub Program



Standard PE Header



NT Optional Header



Section Headers

15


MS-DOS Header

typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
WORD e_magic;
// Magic number
WORD e_cblp;
// Bytes on last page of file
WORD e_cp;
// Pages in file
WORD e_crlc;
// Relocations
WORD e_cparhdr;
// Size of header in paragraphs
WORD e_minalloc; // Minimum extra paragraphs needed
WORD e_maxalloc; // Maximum extra paragraphs needed
WORD e_ss;
// Initial (relative) SS value
WORD e_sp;
// Initial SP value
WORD e_csum;
// Checksum
WORD e_ip;
// Initial IP value
WORD e_cs;
// Initial (relative) CS value
WORD e_lfarlc;
// File address of relocation table
WORD e_ovno;
// Overlay number
WORD e_res[4];
// Reserved words
WORD e_oemid;

// OEM identifier (for e_oeminfo)
WORD e_oeminfo;
// OEM information;e_oemid specific
WORD e_res2[10]; // Reserved words
LONG e_lfanew;
// File address of new exe header
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

16


Real-Mode Stub Program


Là một chương trình con thật sự, có khả năng thực thi và đưa ra các
thông báo lỗi.



Được Microsoft thêm vào để đảm bảo tính tương thích với các HĐH
trước như MS-DOS và Windows 3.1.



Phần này nằm ngay sau MS-DOS Header và trước vùng PE header thật
sự

17



Standard PE Header






SIGNATURE BYTES: Ký hiệu để phân biệt các loại file
thực thi khác nhau như PE, NE, MZ …
#SECTIONS: Số section mà trong phần dữ liệu của file
chứa. Con số này thay đổi tùy theo file khác nhau.
PE/NT HDR SIZE: Kích thước của vùng NT header theo
sau vùng này.
Flags: Một số cờ đặc biệt cho biết các đặc tính của file. 18


NT Optional Header

19


Trường quan trọng













AddressOfEntryPoint: Trường này xác định vị trí điểm vào cho ứng dụng, và
có lẽ quan trọng hơn đối với các hacker hệ thống nó chính là vị trí kết thúc
của Import Address Table (IAT).
Image Base: tham chiếu địa chỉ cơ sở trong không gian địa chỉ của tiến trình
để ánh xạ image file thực thi vào. Giá trị mặc định cho trường này là địa chị
0x00400000.
Section Alignment : mỗi section sẽ được nạp vào một vùng không gian địa chỉ
của tiến trình một cách tuần tự bắt đầu từ địa chỉ Image Base. Section
Alignment chỉ định kích thước nhỏ nhất của bộ nhớ mà vùng này có thể chiếm
dụng khi được nạp.
OS Major/Minor: Phiên bản HĐH tối thiểu cần để chạy chương trình.
ImageSize: Chỉ ra khoảng không gian địa chỉ dành để nạp ảnh thực thi. Con
số này bị ảnh hưởng rất lớn bởi SectionAlignment.
HeaderSize: Trường này chỉ ra kích thước của tất cả các Header trong file bao
gồm: MS-DOS Header, PE Header, Optional Header, PE Sections Header.
CheckSum: Kiểm tra lỗi khi nạp chương trình lên bộ nhớ.
NumberOfRvaAndSizes: trường này chỉ ra chiều dài của mảng Data Directory
theo sau.
20


Section Header





RESOURCE TABLE RVA: Con trỏ địa chỉ tương đối tới đầu vùng
resource.
TOTAL RESOURCE DATA SIZE: Tổng kích thước của vùng resource.
21


Phần 3: Vấn đề truy xuất và sửa
đổi các Resource trong file.

22


Cấu trúc dữ liệu của các node


IMAGE_RESOURCE_DIRECTORY

typedef struct _IMAGE_RESOURCE_DIRECTORY {
ULONG Characteristics;
ULONG TimeDateStamp;
USHORT MajorVersion;
USHORT MinorVersion;
USHORT NumberOfNamedEntries;
USHORT NumberOfIdEntries;
} IMAGE_RESOURCE_DIRECTORY,
*PIMAGE_RESOURCE_DIRECTORY;

23



IMAGE_RESOURCE_DIRECTORY_ENTRY
typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY
{
ULONG Name;
ULONG OffsetToData;
} IMAGE_RESOURCE_DIRECTORY_ENTRY,
*PIMAGE_RESOURCE_DIRECTORY_ENTRY;


Name: Định danh của resource, có thể là một chuỗi chứa tên resource
hoặc một con số



OffsetToData: Con trỏ tới node kế tiếp hay node lá
24


IMAGE_RESOUCE_DATA_ENTRY
typedef struct _IMAGE_RESOURCE_DATA_ENTRY{
ULONG OffsetToData;
ULONG Size;
ULONG CodePage;
ULONG Reserved;
}IMAGE_RESOURCE_DATA_ENTRY,
*PIMAGE_RESOURCE_DATA_ENTRY;



OffsetToData: Chứa địa chỉ offset của vùng dữ liệu

thật sự của resource.
Size: Kích thước của vùng dữ liệu này.
25


×