2012-03-11 30 views

Trả lời

4

Không có cách nào dễ dàng để xóa nó mà không vi phạm định dạng tệp.

Nhưng ehm, được tìm thấy this.

+0

Tôi có thể phá vỡ định dạng tệp nhưng tôi cần phải biết cách thực hiện điều đó mà không cần phải thực hiện lệnh exe. – user1232138

+1

Nếu bạn phá vỡ định dạng tệp, thì nó không thực sự là tệp PE nữa. Bạn có thể cung cấp một stub tùy chỉnh. –

7

Loại bỏ các Dos Stub không có gì để làm với tiêu đề Dos. Có, bạn có thể xóa Dos Stub (vì nó không còn được sử dụng nữa). Bạn thậm chí có thể giảm kích thước của tiêu đề Dos xuống mức tối thiểu (MZ + nhảy tới PE Header). Nhưng bạn không thể loại bỏ hoàn toàn tiêu đề Dos. Nếu không, trình tải Windows sẽ từ chối khởi động hình ảnh của bạn nếu MZ và bước nhảy tới tiêu đề PE bị thiếu.

+0

Bạn có thể lấy kích thước thực của DOS Stub của bất kỳ hình ảnh thực thi nào, bằng cách sử dụng PeStudio (http://www.winitor.com) – mox

+0

Có thể ai là người đã bình chọn câu trả lời của tôi, hãy công bằng và bình luận về câu trả lời! Cảm ơn. – mox

13

Tệp PE phải bắt đầu bằng IMAGE_DOS_HEADER theo sau tại một số điểm bởi cấu trúc IMAGE_NT_HEADERS định nghĩa các trường PE hiện đại.

IMAGE_DOS_HEADER có hai trường bắt buộc - e_magic phải giữ giá trị IMAGE_DOS_SIGNATURE (trông giống như 'MZ' trong ASCII) và e_lfanew phải là giá trị bù trừ từ đầu tệp đến khi bắt đầu IMAGE_NT_HEADERS.

Ngoài hai trường này, phần còn lại của IMAGE_DOS_HEADER là tùy chọn cho Windows qua Windows 16 bit và có thể bằng 0 và phần đuôi DOS là tùy chọn và có thể bỏ qua.

Tệp PE tối thiểu phù hợp bắt đầu bằng IMAGE_DOS_HEADER trong đó e_magic được đặt thành IMAGE_DOS_SIGNATURE và e_lfanew được đặt thành sizeof (IMAGE_DOS_HEADER), theo sau là IMAGE_NT_HEADERS.

0

Bạn không thể giảm kích thước của tiêu đề Dos xuống "tối thiểu". Rất tiếc, trường độ dài là trường cuối cùng trong IMAGE_DOS_HEADER. Do đó, nó có kích thước cố định là 64 byte.