NOTICE

[개념 이해] PE 파일 (EXE와 DLL)

Date : 2014.12.30 17:41 Category :


 악성코드 분석이나 리버싱을 하기 위해서는 기본적으로 PE 파일이 무엇인지 알아야 합니다.



1. PE 파일

 PE 파일은 Portable Executable File의 약자로 실행 가능한 파일을 의미합니다. 이 말조차도 어렵게 느껴지시는 분은 우리가 운영 체제에서 사용하는 프로그램들이 PE 파일이라고 생각하면 됩니다. 그렇다면 PE 파일이 무엇인지 알아야하는 이유가 무엇일까요? 악성코드 분석이나 리버스 엔지니어링의 대상이 대부분 PE 파일이기 때문입니다.

 PE 파일의 종류는 다음과 같습니다.


 실행 파일 계열

  .exe, .scr

 라이브러리 계열

  .dll

 드라이버 계열

  .sys

 오브젝트 파일 계열

  .obj


 오늘은 PE 파일 중에서 .exe와 .dll에 대해 쉽고 간단하게 설명하겠습니다. 저는 개인적으로 PE 파일에 대한 모든 것을 완벽히 아는 것도 중요하지만 기본 개념이 없다면 제가 알려드리는 것만 이해해도 충분하다고 생각합니다. 단 본격적으로 파일을 분석하려면 PE 파일의 구조에 대해 어느정도 알아야합니다. PE 파일의 헤더 구조에 대해 공부하고 싶은 분은 아래 링크를 참고하시기 바랍니다. 이 곳만큼 정리가 잘 된 곳이 없습니다.



 PE 파일의 기본 구조에 대해서는 아래 링크를 참고하시면 됩니다.


[개념 이해] PE 파일의 구성: http://securityfactory.tistory.com/90



2. EXE 파일과 .dll 파일에 대한 이해

 사람들이 흔히 이야기하는 실행파일이 .exe 파일 입니다. 우리가 많이 사용하는 인터넷익스플로러(iexplore.exe), 메모장(notepad.exe), 토렌트 프로그램(uTorrent.exe) 등이 .exe 파일로 되어 있습니다. .exe 파일을 실행하면 하나의 독립적인 프로세스로 동작하며 그 안에서 할 수 있는 모든 동작을 제어합니다.

 예를 들어 파일은 사람이 잠들어 있는 상태와 같습니다.(아무런 동작을 하지 않습니다.) 프로세스는 사람이 잠에서 깨어 있는 상태입니다. 이 때 사람은 자신이 할 수 있는 행동(걷기, 숨쉬기, 보기)을 스스로 할 수 있습니다. 프로세스도 마찬가지로 자신이 가지고 있는 기능 내에서 동작을 할 수 있습니다.

 그렇다면 .dll 파일은 무엇인가? .exe를 도와주는 파일입니다. 독립적으로 실행할 수 없고 오직 프로세스의 하위 모듈로 동작합니다. 사람이 뛸 수는 있지만 날 수 없어서 비행기를 타는 것처럼 프로세스의 기능이나 동작을 추가하거나 도와주는 용도로 많이 사용됩니다. 필요에 따라서 Load 또는 Unload 할 수도 있습니다.

 아래 [그림 2.1.]은 InternetExplore.exe가 설치된 폴더입니다. Set-up 파일로 IE 웹브라우저를 설치하면 아래와 같이 IE 웹브라우저 실행에 필요한 파일들이 생성됩니다.


[그림 2.1.] Internet Explorer 설치 폴더 확인


 여기서 iexplore.exe을 실행하면 웹브라우저 창이 뜨면서 iexplore.exe 프로세스가 생성됩니다. 그리고 동작에 필요한 .dll 파일들이 로드되어 있는 것도 확인할 수 있습니다. 


[그림 2.2.] iexplore.exe 실행


[그림 2.3.] iexplore.exe 프로세스 생성 및 하위 .dll 모듈 확인


 이상으로 '[개념 이해] PE 파일 (EXE와 DLL)'에 대한 포스트를 마치도록 하겠습니다.