Self-Improvement

x64dbg(x64dbg, x32dbg) IAT 본문

리버싱 기초

x64dbg(x64dbg, x32dbg) IAT

JoGeun 2020. 5. 7. 17:25

IAT는 프로그램에서 사용하는 라이브러리 테이블이다

 

CFF Explorer에서 IAT에서 "kernel32.dll"에 속한 API를 확인하고 x32dbg에서 찾아본다.

 

CFF Explorer의 IAT의 Kernel32.dll의 GetVersion API의 INT(Import Name Table) 주소 즉 문자열을 로딩한 주소는 0x75B6이며 Image Base 값 까지 합하면 0x4075b6 주소이며 x32dbg에서 확인해본다.

 

GetVersion() 함수를 사용하는 부분을 알아본다.

 

"Kernel32.dll" API 리스트에서 GetVersion은 2번째에 존재하며 이는 IAT의 위치를 나타내는 FTs에서 2번째 데이터이다.

Kernel32.dll의 Fts 값이 0x7000이며 Image Base까지 해서 0x407000이다.

GetVersion() 함수는 2번째에 위치함으로 0x407000 + (4*1) 하여 0x407004이다

 

실제로도 GetVersion API를 클릭했을시 상단에 FTs의 값이 0x00007004로 알 수 있다.

 

x32dbg에서 0x407004 위치의 데이터 값은 0x754f2cb0이다.

 

0x754f2cb0 주소의 어셈블리어를 보면 "jmp 18185575" 즉 0x75551818에 저장된 데이터를 목표 주소로 이동하는 코드이다.

 

조금은 복잡하게 찾아갔지만 x32dbg에서 기능을 제공하고 있다. "기호" 탭에서 "kernel32.dll"의 API목록에서 GetVersion을 검색하면 쉽게 접근할 수 있다.