PEid로 EPsection을 확인해보면, .text로 된 부분이 있다. 이 부분에 대해 알아보도록 하자
먼저, 간단히 설명하자면 PE파일에서 섹션을 이루는 부분이 있는데
.text라는 것은 그중에 실행코드를 담고 있는 부분이다
위의 설명에서 보면, .text섹션은 IAT 정보를 담고 있는 부분이라고 한다.
IAT 정보가 무엇인지 알아보기에 앞서, DLL파일부터 파악할 필요가 있다.
과거 16비트 DOS를 사용하던 시절에는 DLL개념이 없고 라이브러리만 존재했다.
예를 들어 printf()함수를 사용할 때 컴파일러가 이 함수의 바이너리 코드를 라이브러리에서 그대로 가져와서 바로 프로그램에 삽입하는 형태였는데, 그러나 32비트 윈도우 환경을 사용하는 경우에는 매우 많은 라이브러리를 사용해야 하므로 이러한 사용법이 비효율적이라고 할 수 있다.
그래서 개발자들끼리 모아서 DLL에 대한 개념 고안을 해냈다.
따로 DLL을 구성하여 필요할때마다 불러 쓰고, 한번 로딩된 DLL코드와 리소스는 Memory Mapping 기술로 여러 프로세스에서 공유하여 사용하자는 것이다. 또한, 라이브러리 업데이트 시에 해당 DLL파일만 교체하면 된다
이러한 DLL을 로딩하는 기술에는 크게 두가지가 있다
Explicit Linking은 프로그램에서 사용되는 순간에 로딩하여 사용 종료시 메모리에서 해제하는 것이고
Implicit Linking은 프로그램이 시작되는 순간에 로딩하고 사용이 끝나면 메모리에서 해제하는 것이다
이 중 IAT는 Implicit Linking 을 지원하게 된다
여기서 IAT 파일은 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지 기술한 테이블이라고 보면 된다
또한, UPX를 해제한 후 HxD에서 EXE파일 시 MZ 라는 문자를 확인할 수 있는 경우가 있는데,
이것은 위에서 보았던 PE파일의 구조에서 DOS영역의 DOS MZ Header를 나타내는 것으로 이해할 수 있다
'2. Reversing (리버싱) > 2) 개념 정리' 카테고리의 다른 글
[2021.09.18] abex crackme 1&2, 어셈블러 (0) | 2021.09.18 |
---|---|
[2021.09.11] 리버싱을 위한 준비, codeengn basic 01 (0) | 2021.09.12 |
[2021.09.11] 코드 분석, PE FILE FORMAT (0) | 2021.09.11 |
[ 2021.09.04 ] 01. 리버싱을 위한 기초 지식 (0) | 2021.09.07 |
[2020.04.14] Reversing.kr | AutoHotkey1 개념 정리 (0) | 2020.04.26 |