반응형

Windows 상에서 리버싱을 공부하다보면 PE 구조는 필수 지식 중에서도 필수이기 때문에 PE 구조를 더 잘 이해하기 위해 PE Viewer를 만들어보게 됐다.

 

리버싱 서적의 양대산맥 중 하나인 "리버싱 핵심 원리" 일명 나뭇잎 책에서도 PE Viewer를 만들어보는 것을 권장하고 있을 정도이다.

 

개발 언어는 C이며, Windows에서 콘솔 상에서만 출력하는 버전이다.

 

또한 분석 대상 파일이 32bit인지 64bit인지에 따라 유동적으로 분석하겠끔 코드를 짰다.


아래의 글들을 필독한 후 PE Viewer 툴을 만들어볼 것을 추천한다.

(특히 EAT 분석 글에 나온 GetProcAddress() 함수의 동작 원리는 이해해야 한다.)

 

Windows 11 64bit 환경에서 PE 파일(notepad.exe) 분석 냠냠쓰 : https://sean.tistory.com/207

 

windows 11 64bit 환경에서 PE 파일(Kernel32.dll) EAT 분석 냠냠쓰 : https://sean.tistory.com/208

 


Windows.h
C언어나 C++ 언어로 Win32 API를 사용할 때 포함해야 할 여러 헤더 파일들이 있는데
개발자들의 편의를 위해 기본적으로 포함해야 할 헤더 파일들을 Windows.h 파일에 포함시켜뒀기 때문에
Windows.h 파일만 포함시켜도 된다.

참고로 Windows.h 파일에 포함되는 헤더 파일 중에 대부분의 형식은 windef.h 파일에 정의하고 있다.

http://ehpub.co.kr/tag/windows-h/
PE Viewer 개발에 Windows.h 파일을 포함시킨 가장 큰 이유는 IMAGE_DOS_HEADER와 IMAGE_NT_HEADER와 같은 구조체를 사용하기 위함이다.

IMAGE_DOS_HEADER와 IMAGE_NT_HEADER 같은 PE 구조와 관련된 구조체는 winnt.h 파일에 포함되어 있는데

Windows.h 파일만 포함시키면 하위에 winnt.h 헤더 파일의 내용도 포함되어 있어 사용할 수 있기 때문이다.

개발 환경

 

Windows 11에서 Visual Studio 2022 버전을 이용해 개발했다.

 

빌드 모드는 Debug x64로 했으며, 최종적으로 끝났을 때 Release x64 모드에서 빌드할 것이다.

 

github repo : https://github.com/sean-baek/pe_viewer


글은 pe viewer 툴 만들기(1)부터 시작하여 header 파일의 내용을 미리 보고 나서 각 구조체의 정보들을 파싱하여 출력하는 함수들을 설명한 뒤 main 함수를 설명한다.


실행 화면

 

반응형

+ Recent posts