Tuuna Computer Science

PE 파일 재배치 본문

Reversing

PE 파일 재배치

GuTTe 2018. 6. 12. 16:27
    
PE 파일이 프로세스 가상 메모리에 로딩될 때 PE 헤더의 ImageBase 주소에 로딩된다. 

DLL파일의 경우 ImageBase에 이미 다른 DLL파일이 로딩되어 있다면 다른 비어 있는 주소 공간에 로딩된다. 

=> 재배치 

PE 재배치 작업의 기본 동작 원리 

  1. 프로그램에서 하드코딩된 주소 위치를 찾는다. 
  2. 값을 읽은 후 ImageBase만큼 뺀다. (VA -> RVA)
  3. 실제 로딩 주소를 더한다.(RVA -> VA)

Relocation Table : 하드코딩 주소들의 OFFSET(위치)을 모아놓은 목록

PE 헤더의 Base  Relocation Table 항목 따라가기 

===================================

IMAGE_BASE_RELOCATION 구조체 

  • VirtualAddress :: 기준 주소 :: 실제론 RVA값 기준 값 : 1000
  • SizeOfBlock :: 단위 블록의 크기  :: 150
  • TypeOffset :: 이 구조체 밑으로 WORD 타입의 배열이 따라 온다. 
                              :: 그리고 이 배열 항목의 값이 바로 프로그램의 하드코딩된 주소들의 옵셋이다.
                                (Type 4bit + Offset 12bit)  
                                 ex) TypeOffset : 3420 --> Type : 3 || Offset : 420

깨알 상식 : 32bit : 3 , 64bit : A 


VirtualSize(1000) + Offset(420) = 1420(RVA) 


Comments