본문 바로가기
reversing

DLL 인젝션이란

by 코끼리_땃쥐 2022. 6. 13.
반응형

DLL 인젝션이란 실행중인 다른 프로세스에 특정 DLL 파일을 강제로 삽입하는 것입니다.

 

조금더 기술적으로 표현하자면 다른 프로세스에게 LoadLibrary() API를 스스로 호출하도록 명령하여 사용자가 원하는 DLL을 로딩(Loading)하는 것입니다.

DLL인젝션이 일반적인 DLL로딩과 다른점은 로딩 대상이 되는 프로세스가 내 자신이냐 아니면 다른 프로세스냐 하는 것입니다. 

 

DLL인젝션 활용 예

LoadLibrary() API를 이용해서 어떤 DLL을 로딩하면 해당 DLL의 DllMain() 함수가 실행됩니다. DLL인젝션의 동작 원리는 외부에서 다른 프로세스로 하여금 Loadlibrary() API를 호출 하도록 만드는 것이기 때문에 (일반적인 DLL로딩과 마찬가지로) 강제 삽입된 DLL의 DllMain() 함수가 실행됩니다. 또한 삽입된 DLL은 해당 프로세스의 메모리에 대한 접근 권한을 갖기 때문에 사용자가 원하는 다양한 일(버그패치, 기능추가, 기타)을 수행 할수 있습니다

 

기능 개선 및 버그 패치

[기능 개선] 및 [버그 패치]에 사용될 수 있습니다. 만약 어떤 프로그램의 소스코드가 없거나 수정이 여의치 않을 때 DLL 인젝션을 사용하여 전혀 새로운 기능을 추가(PlugIn 개념) 하거나, 문제가 있는 코드와 데이터를 수정할 수 있습니다.

 

메시지 후킹

Windows OS에서 기본으로 제공되는 메시지 후킹(Message Hooking) 기능도 일종의 DLL인젝션 기법이라고 볼 수 있습니다. 이 경우는 등록된 후킹 DLL을 OS에서 직접 인젝션 시켜준다는 차이점이 있을 뿐입니다.

 

API후킹

실제 개발 프로젝트에도 많이 사용되는 API후킹을 할 때 DLL 인젝션 기법이 많이 사용됩니다. 후킹 함수를 DLL형태로 만든 후 후킹을 원하는 프로세스에 간단히 인젝션 하는 것만으로 API후킹이 완성됩니다. 이영ㄱ시 삽입된 DLL은 해당 프로세스의 메모리에 대한 접근 권한을 가지고 있다는 특성을 잘 활용한 것입니다.

 

기타 응용 프로그램

주로 PC 사용자들은 감시하고 관리하기 위한 애플리케이션들에서 사용되기도 합니다. 예를 들면 특정 프로그램(예 : 게임,  주식 거래, 기타)의 실행 차단, 유해 사이트 접속 차단, PC사용 모니터링 프로그램등이 있습니다. 이런 류의 차단/방지 프로그램들은 주로 관리자(혹은 부모님)가 사용자(혹은 자녀)를 관리 감시하기 위한 목적으로 설치됩니다. 관리/감시당하는 쪽에서 당연히 이런 프로그램들을 어떻게 해서든지 종료하고 싶어하겠지요. 하지만 DLL인젝션 기법으로 정상프로세스에 살짝 숨어들어가면서 실행된다면, 들킬 ㅇ며려도 없고 프로세스가 종료 당할 걱정도 없습니다.(만약 사용자가 무리하게 Windows 시스템 프로세스를 강제로 종료하면 시스템도 같이 종료되기 때문에 결국 차단/방지라는 목적을 달성하는 셈이 됩니다.)

 

 

반응형

'reversing' 카테고리의 다른 글

64비트  (0) 2022.07.15
DLL 이젝션이란  (0) 2022.06.13
테크 맵  (0) 2022.05.26
API 후킹  (0) 2022.05.26
NT header  (0) 2022.05.13

댓글