본문 바로가기

PE 구조

PE 분석 PE 분석 python으로 PE 파일을 분석해보도록 하겠습니다. 먼저 기본적으로 설치된 python에는 pefile 모듈이 존재 하지 않습니다.ImmunityDBG의 모든 모듈은 C:\Program Files (x86)\Immunity Inc\Immunity Debugger\Libs 해당 경로에 저장되어있습니다. pefile 모듈을 사용하기 위해서 위 경로에서 pefile.py와 pelib.py를 C:\python27\Libs에 넣어두도록 합니다.우분투에서 사용할 때는 /usr/lib/python2.7에 추가하도록 합니다. 위 소스코드를 보도록 하죠. pefile은 PE 파일을 분석하기 위한 모듈이며 pprint는 pretty-print 모듈로 말 그대로 예쁘게, 보기좋게 출력을 해주는 모듈입니다.한번 .. 더보기
PE 재배치 (PE Relocation) PE Relocation PE파일인 exe, dll, sys 는 메모리에 로딩 될 때 ImageBase 주소에 로딩됩니다. 하지만 해당 주소에 이미 다른 파일이 로딩 되어있다면 어떻게 해야 할까요?? 앞서 IAT를 공부하면서 말했지만 다른 주소로 이동됩니다. 이렇게 다른 주소로 이동되는 것을 Relocation이라고 합니다. 좀 더 자세히 알아보도록 하겠습니다. DLL / SYS Relocation 메모리에 A.DLL 파일이 ImageBase에 맞게 100000000에 로딩되어 있습니다. 그러던 중 어떤 프로그램이 B.DLL이 로딩되려고 하는데 마찬가지로 ImageBase가 100000000 이여서해당 주소에 로딩 할려고 합니다. 그런데 이미 A.DLL이 먼저 로딩되어 있어서 B.DLL은 다른 주소를 찾.. 더보기
EAT (Export Address Table) EAT (Export Address Table) EAT는 라이브러리 파일에서 제공하는 함수를 다른 프로그램에서도 사용할 수 있도록 해주는 방법입니다.IAT에서 설명한것 처럼 프로그램 마다 동일한 라이브러리가 포함되어 실행되면 메모리 낭비가 심해지죠. EAT는 IMAGE_EXPORT_DIRECTORY에 그 내용을 저장하고 있습니다. IMAGE_EXPORT_DIRECTORY는 IMAGE_OPTIONAL_HEADER.DataDirectory[0]에 존재합니다. IMAGE_EXPORT_DIRECTORY 여기서 중요한 멤버는 다음과 같습니다. * NumberOfFunctions실제 Export 함수 개수를 나타냅니다. * NumberOfNamesExport 함수 중에서 이름을 가지는 함수 개수를 나타냅니다. ( 더보기