ch@e
Published 2023. 3. 12. 15:44
DLL System & Reversing 필기

DLL (Dynamic Link Library)

동적 링크 라이브러리로, 라이브러리라는 말에서도 알 수 있듯이 비슷하고 반복되는 로직, 함수를 따로 파일로 떼어내어 간편하게 재활용 하는 것이다. 그 중에서 컴파일 시점에 main 코드와 결합되지 않고, 프로그램을 실행하면 dll 파일을 필요할 때 호출한다. 그렇기에 실행파일과 dll파일은 독집적으로 존재한다고 볼 수 있다. 

 

 

 

DLL 활용 장점

더 적은 리소스 사용 

여러 프로그램이 같은 함수 라이브러리를 사용하는 경우 dll을 사용하면 디스크와 실제 메모리에서 로드되는 중복 코드를 줄일 수 있다. 

 

손쉬운 배포와 설치

DLL 내의 함수를 업데이트하거나 수정해야하는 경우 DLL을 배포하고 설치할 때 프로그램을 DLL과 다시 연결하지 않아도 된다. 여러 프로그램이 같은 DDL을 사용하는 경우에도 모든 프로그램에 업데이트나 수정 내용이 적용된다.

 

•  실행 파일 크기를 줄일 수 있다.

   DLL은 컴파일 시점에서 main코드와 결합하지 않고 프로그램 실행시 필요할 때 호출되므로 실행파일 크기를 줄여 메모리 절약을 할 수 있다.

 

 

DLL 종속성

프로그램이나 DLL이 다른 DLL의 DLL 함수를 사용하는 경우 종속성이 작용된다. 이 경우 해당 프로그램은 더 이상 자체 포함 프로그램이 아니며, 종속성이 손상되면 프로그램에 문제가 발생할 수 있다. 종속성이 손상되어 프로그램이 실행되지 않을 작업들

 

• 종속 DLL을 새 버전으로 업그레이드 하는 경우

• 종속 DLL을 수정하는 경우

• 종속 DLL을 이전 버전으로 덮어쓰는 경우

• 종속 DLL을 컴퓨터에서 제거하는 경우

 

 

 

DLL 파일을 사용하는 상황과 활용

[상황]

- "A" 프로그램이 특정 DLL 파일 "B"가 필요하다.

- "B" 파일은 핵심 Logic으로 전체 프로그램 성능을 좌우한다.

- "A" 실행 프로그램은 변경점이 없으며, "B" 파일의 알고리즘에 따라 제품별 성능차이가 있다.

 

[활용]

→ 실행파일 "A"와 DLL 파일 "B"가 분리되어 있기에 디버깅이 용이하다.

→ 정적 라이브러리 파일이 아니기에 "A"는 컴파일할 필요가 없다.

→ DLL 파일만 변경해서 배포 및 성능 테스트를 할 수 있다.

→ 기존 DLL 파일 "B"에 새로운 DLL 파일 "C"를 만들어서 성능을 높일 수 있다.

→ 여러 언로 버전으로 구성된 아키텍처에서 활용할 수 있다.

 

-> 특정 프로그램이 모듈별 실행되는 경우라면 DLL 처리하면 좋다.

 

 

 

DLL 파일 유의 사항

파일 존재 여부와 위치에 유의해야한다.DLL 파일은 여러 언어와 버전으로 만들어질 수 있지만 실행 파일과 DLL 파일간 호환성은 유의해야한다.DDL 간 종속성(위 설명)을 유의해야한다.

profile

ch@e

@ch@e

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그