티스토리 뷰

728x90
반응형

[Reversing] 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE)


가능한 가장 작은 PE 실행 파일 만들기(Tiny PE)PE 파일의 전체 구조를 보며, 불필요한 부분을 삭제하고 변경을 통해 크기를 줄이는 목적으로 작성하겠습니다.


Helloworld.exe


파일 최초 크기

8,704 바이트 이며, 실행 시 Hello World가 출력됩니다.


파일 전체 구조


1. IMAGE_DOS_HEADER와 MS-DOS_Stub

 1.1 IMAGE_DOS_HEADER

IMAGE_DOS_Header의 구조체를 확인 했을 때 구조체 중 "e_magic" 필드와 "e_lfanew" 필드가 가장 중요하다고 합니다.

e_magic : DOS Signature [4D5A → MZ]

e_lfanew : NT Header offset [E0000000 → 000000E0]


(해당 영역을 삭제해 버리게 되면, 뒷 부분의 주소값이 밀려 정상적인 참조가 되지 않는다고 합니다. 해당 부분을 제외한 다른 나머지 영역은 0으로 변경해주었습니다.

그러면 실행과정에서 오류가 생기겠죠)



 1.2 MS-DOS_Stub

간단히 다시 설명을 하고 넘어가자면, 

DOS_Stub는 IMAGE_DOS_Header 다음부터 IMAGE_NT_HEADER 구조체 전까지 입니다. 
DOS_Stub의 존재 여부는 있을 수도 있으며 없을 수도 있습니다. 크기도 일정하지 않습니다. 
DOS 환경에서 실행 할 때 필요한 부분으로 가볍게 알고 있으며 중요한 부분이 아니므로 내용을 지워도 됩니다. 


즉, DOS 운영체제에서 사용하는 부분이고, 크기도 일정하지 않으며 없어도 실행에 문제 없습니다.

(peview 이용하여 해당 영역 확인)


해당 영역도 0으로 변경했습니다.


 0으로 채운 후 peview로 바라본 PE구조입니다.


시간만 변경이 되었으며, 정상적으로 실행도 됩니다.해당 부분을 0으로 바꿔주었기 때문에 크기의 변화는 없습니다.

728x90
반응형
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today