관리 메뉴

JIE0025

DLL(Dynamic Linked Library) 이란? 본문

기타 학습/보안

DLL(Dynamic Linked Library) 이란?

Kangjieun11 2020. 6. 7. 20:49
728x90

악성코드 분석 강의를 듣는 중,  용어가 생소해서 자꾸 까먹는 이유로 게시글로 정리했다 ㅠㅠ

 
DLL 은 Dynamic Linked Library의 약자이다. 동적 연결 라이브러리라고 부른다. 

 

- 라이브러리란 SW 개발 시 자주 사용하는, 기초적 함수들의 중복 개발을 피하기 위하여 표준화된 함수, 데이터 타입을 만들어 모아놓은 파일을 얘기하는데, 동적 연결 라이브러리란 각 실행파일에서 해당 라이브러리의 기능을 사용할 때(요청 시) 파일을 참조해 호출한다.  

 

요약하자면, 각 프로그램이 어떤 기능을 사용할 때, 그 기능은 DLL 파일로서 저장되어 있다는 뜻이다.

 

 

DLL 장점

- 실제 메모리에 로드되는 중복 코드를 줄인다. 

- 모듈식 프로그램 개발 가능

- DLL 내 함수 수정 시 프로그램 재 연결이 필요하지 않다. 

 

추가 개념

DLL 인젝션? 

실행중인 다른 프로세스에 특정 DLL 파일을 강제로 삽입하는 기술

 

일반적 DLL 로딩 VS DLL 인젝션

일반적 DLL : 프로세스가 스스로 자신이 필요한 DLL 들을 로딩해서 사용

DLL 인젝션 : 다른 프로세서가 DLL을 삽입 

   > LoadLibrary() API를 호출하도록 명령, 유도 해 공격자가 원하는 DLL을 로딩하는 것

 

 

 

프로세스에 DLL 로딩시  자동으로 DLLMain()이 호출되는데 DLLMain()에 코드 추가 시 DLL 인젝션 한 파일을 실행되게 할 수 있다.