티스토리 뷰

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


가능한 가장 작은 PE 실행 파일 만들기(Tiny PE)PE 파일의 전체 구조를 보며, 불필요한 부분을 삭제하고 변경을 통해 

크기를 줄이는 목적으로 작성하겠습니다.



Helloworld.exe

0.01MB


파일 최초 크기

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


파일 전체 구조

1. IMAGE_DOS_HEADER와 MS-DOS_Stub

 1.1 IMAGE_DOS_HEADER

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

해당 부분을 제외한 다른 나머지 영역은 0으로 변경해주었습니다.

(해당 영역을 삭제해 버리게 되면, 뒷 부분의 주소값이 밀려 정상적인 참조가 되지 않는다고 합니다. 

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



 1.2 MS-DOS_Stub


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

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

그러므로 실행과정에 크게 문제는 없습니다.

해당 영역도 0으로 변경했습니다. 
 0으로 채운 후 peview로 바라본 PE구조입니다.

해당 부분을 0으로 바꿔주었기 때문에 크기의 변화는 없습니다.

시간만 변경이 되었으며, 정상적으로 실행도 됩니다.

댓글
공지사항
«   2019/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Total
129,531
Today
20