맨위로

기타2011. 12. 23. 22:06

 

'리버싱 - 리버스엔지니어링 비밀을 파헤지다 ' 의내용을 바탕으로 작성 되었습니다.

임포트와 익스포트

임포트와 익스포트는 실행 이미지의 동적 링크를 가능하게 해주는 메커니즘이다.

 

 

PE 파일 포맷의 디렉토리

- 익스포트 테이블 (Export Table) : 모듈의 모든 익스포트 함수 이름과 RAV를 포함 한다.

구조체 IMAGE_EXPORT_DIRECTORY

 

- 임포트 테이블 (Import Table) : 임포트하는 모듈과 함수 이름을 포함한다 . 함수 별로 함수 이름 문자열과 함수의 임포토 어드레스 테이블 엔트리를 가리키는 RAV를 포함한다 . 모듈이 로드될 떄 임포트한 함수의 실제 주소를 전달받는 시작점이 된다 .

구조체 IMAGE_IMPORT_DESCRIPTOR

 

-리소스 테이블 (Resource Table) : 실행 모듈의 리소스 디렉토리 포인터다 . 리소스 디렉토리는 문자열, 대화상자 레이아웃, 메뉴와 같은 다양한 사용자 인터페이스 요소와 정적인 요소를 정의한다.

구조체 IMAGE_RESOURCE_DIRECTORY

 

-베이스 리로케이션 테이블 (Base Relocation Table) : 모듈이 빌드되면서 설정된 로드 주소가 아닌 다른 주소로 로드되어야 할 떄 재배치되어야 하는 주속들의 목록이다.

구조체 IMAGE_BASE_RELOCATION

 

-디버깅 정보 (Debugging information) : 실행 모듈을 위한 디버깅 정보다. 일반적으로 실질적인 디버깅 정보를 담고 있는 외부 심볼 파일에 대한 링크 정보를 제공한다.

구조체 IMAGE_DEBUG_DIRECTORY

 

-스래드 로컬 스토리지 테이블 (Thread Local Storage Table) : 스레드 로컬 변수를 포함할 수 있는 실행 모듈의 스레드 로컬 섹션에 대한 포인터다. 이기능은 로더가 실행 모듈을 로드할 때 사용된다.

구조체 IMAGE_TLS_DIRECTORY

 

-로드 설정 테이블 (Load Configuration Table) : LOCK prefiex 테이블 (단일 프로세서 시스템이나 멀티 프로세서 시스템에 맞게 실행 모듈이 로드될 떄 실행 모듈 이미지를 변경 가능)과 같은 다양한 이미지 설정 요소를 포함한다.

이테이블은 모듈의 예외 핸들러 목록도 포함한다(악의적인 코드가 예외 핸들러를 설치하는 것을 방지)

구조체 IMAGE_LOAD_CONFIG_DIRECTORY

 

-바운드 임포트 테이블 (Bound Import Table) : 바운드 임포트 엔트리 정보를 담고 있는 추가적인 임포트 테이블이다. 바운드 임포트는 임포트한 실행 모듈의 실제 주소가 포함되어 있다는 것을 의미하며, 이 디렉토리는 그 주소가 여전히 유효한지 확인하기 위해서 사용한다.

구조체 IMAGE_LOAD_CONFIG_DIRECTORY

 

-임포트 어드레스 테이블 (Import Address Table) : 임포트되 각 함수의 목록을 포함한다 . 실행 모듈이 로드 될떄 각 임포트 함수의 엔트리가 해당 함수에 대한 실제 주소로 초기화 된다.

구조체 32비트 포인터 목록

 

-지연 임포트 디스크립터 (Delay Import Descriptor) : 임포트한 함수를 처음 호출할 떄 해당 함수의 실제 주소가 매핑되는 지연 임포트 로딩 메커니즘을 구현하기 위해서 사용되는 정보다. 이 메커니즘은 운영체제가 제공하는 것이아니라 C 런타임 라이브러리에 의해서 구현된다.

구조체 ImgDelayDescr

'기타' 카테고리의 다른 글

안티 리버싱 기술  (0) 2011.12.23
산술 연산 플래그  (0) 2011.12.23
PE 파일 포맷의 디렉토리  (0) 2011.12.23
리버싱 툴  (0) 2011.12.23

Posted by STIH

댓글을 달아 주세요