반응형

64bit Windows에서 32bit 시스템 파일들은 C:\Windows\SysWOW64 폴더에 있다.

 

 

Windows 7 64bit에서 32bit notpad.exe의 AddressOfEntryPoint를 보면 31C9이다.

 

 

.text 섹션의 VirtualAddress는 1000이고, 사이즈는 A6FC이다.

 

 

PointerToRawData는 400이다

 

 

 

즉, HxD에서 EP 영역으로 가자면 31C9(RVA) - 1000(.text VirtualAddress) + 400(PointerToRawData) = 25C9이다.

 

파일(ImageBase : 1000000) 프로세스 메모리(로딩 주소 : B40000)
1001100 B41100
1001104 B41104
100C0A4 B4C0A4

 

위 HxD에서의 EP 영역 사진에서는 하드코딩된 주소가 ImageBase(1000000) 기준으로 되어 있다.

 

notepad.exe 파일이 생성(빌드)될 때는 실제 어느 주소에 로딩이 될지 예측할 수 없으므로 ImageBase 기준으로 하드 코딩 주소를 적어놓았지만 실행되는 순간에 PE 재배치 과정을 거치면서 이 주소들은 모두 로딩 주소 기준으로 변경된다.

 

그렇기에 프로그램이 에러 없이 정상 동작할 수 있게 되는 것이다.

 

 

B41100, B41104 주소는 “.text” 섹션의 IAT 영역이고, B4C0A4 주소는 “.data” 섹션의 전역 변수이다.

반응형

+ Recent posts