안 쓰던 블로그

32bit IAT 로딩 과정 2 본문

CTF/Reversing

32bit IAT 로딩 과정 2

proqk 2020. 10. 5. 15:42
반응형

 

EXPORT Table이 비어있는 것을 보니까 notepad.exe는 다른 누군가에게 API를 제공하고 있지 않는다

IMPORT Table을 보면 RVA값과 Size가 있다

이 말은 ImageBase로부터 0x000234B8 만큼 떨어진 곳에 IMPORT Table이 존재한다는 의미이다

ImageBase는 어디에 있는지 확인한다

 

VA=RVA+ImageAddress니까 0x000234B8 + 0x00400000 되는 곳에 IMPORT Table이 존재할 것이다

 

근데 디버거로 보면 ImageBase가 다르다

320000이 Image Base, 거기에 text 세션 RVA(1000)을 더한 321000을 잡는다

즉 320000이 실제 Image Base이다

 

왜 이렇게 차이가 나냐면, 프로그램에 ASLR이 걸려 있을 확률이 높아 제대로 된 ImageBase값이 표시되기 않기 때문이다

 

ASLR은 Address Space Layout Randomization의 약자로, PE 파일이 메모리에 로딩될 때 로딩 시작 주소 값을 랜덤하게 바꾸는 기술이다
ASLR와 더불어 DLL 파일도 초기에 로딩되는 주소가 매 실행마다 달라진다

 

아무튼 위에 40000을 더한 방식으로는 제대로 찾아지지 않는다

 

대신 RVA를 사용한 식으로 찾을 수 있다

 

0x00320000(Image Base)+0x000234B8(IMPORT Table RVA) = 3434B8(VA)

 

 

HxD에서 20CB8를 찾으면 다음과 같다

이 부분이 IMAGE_OPTIONAL_HEADER32.DataDirectory[1] 구조체 값이다

전체 구조체 값은 아까 PEView에서 RVA값 볼 때 아래 있던 Size를 20CB8에 더한 만큼이 전체 구조체이다

지금 블럭 잡은만큼은 첫 번째 원소인 셈

 

반응형
Comments