windows pe) pe 구조
pe는 실행 파일의 실행 형식 입니다.
pe는 32비트의 실행파일의 형태를 말하고 pe32는 64비트의 실행 파일의 형태를 말합니다.
pe 파일의 종류
종류 |
주요확장자 |
종류 |
주요확장자 |
실행계열 |
exe,scr |
드라이버 계열 |
sys,vxd |
라이브러리 계열 |
dll,ocx,cpl,drv |
오브젝트 파일 계열 |
obj *pe공식에서는 obj도 pe파일로 간주 합니다 |
참고로 오브젝트 파일을 제외하고 다실행가능합니다.dll 이나 sys는 쉘에서 바로 실행할순 없지만 디버거 또는 서비스 등으로 실행가능합니다.
pe 파일의 기본 구조
dos 해더부터 section header 까지 pe해더라고 하며 이 밑섹션을 바디라고 합니다.
파일에서는 offset 이라하고 메모리에서는 va (절대주소)라고 합니다.
파일이 매모리에 로딩되면 모양이 달라집니다.섹션의 크기 또는 위치등
파일은 .text .data .rsrc로 나누어 집니다.
pe 해더의 끝부분에는 null로 이루어진 곳이있는데 null padding 이라고 하며 dll인젝션등또는 문자열 수정등 여러가자로 사용됨니다.
이 nullpadding은 컴퓨터에서 파일 메모리 네트워크 페팃등을 처리할떄 효율을 높이기위해 최소 기본단위개념을 쓰기때문에 pe파일에도 똑같이 적용된것입니다.
파일 메모리에서 섹션이 시작되는 위치는 각파일 메모리의 최소기본단위의 배수에 해당하는 위치이고 빈공간을 null로 채워버림니다,
va와 rva
va(절대주소)는 프로세스 가상 메모리의 절대주소를 말하며 rva는 어느 기분(imagebase)에서부터의 상대주소를 말합니다.
rva+imagebase=va
pe해더내에서는 rva(상대주소)형태로된것이 많습니다. 이유는 pe파일이 프로세스 가상메모리의 특정위치에 로딩되는 순간 이미 그위치에 다른pe파일(dll)이 로딩되어있을수도 있습니다.
이떄재배치(relocation)를 통해서 다른위치에 로딩되야하는데 만약 pe해더정보가 va(절대주소)로 되어있다면 정상적인 엑셋스가 되지 않기 떄문에 rva(상대주소)로 해주면 재배치가 이일어나도 기준위치에 대한 상대주소가 변하지 않기떄문에 문제없이 원하는 정보에 엑세스할수있습니다.
'Reversing > Windows PE' 카테고리의 다른 글
windows pe) RVA to RAW(file offset) (0) | 2014.07.15 |
---|---|
windows pe)NT_HEADER 하 (0) | 2014.07.11 |
windows pe) NT_HEADER 상 (0) | 2014.07.10 |
windows pe)DOS_STUB (0) | 2014.07.10 |
windows pe) pe 해더 DOS_HEADER (0) | 2014.07.09 |