[WinAPI] DLL Injection – 1. 개념

이번 글에서는 DLL 인젝션의 간단한 개념에 대해 알아보겠습니다.

DLL 인젝션은 기본적으로 다른 프로세스의 주소 공간 내에서 DLL을 강제로 로드시키는 기술로써, 의도치 않은 코드를 실행시키는 기술입니다.
보통 DLL 인젝션은 다른 프로세스가 어떤 프로그램을 의도하지않거나 예상하지 않은 기능을 수행하게 만듭니다.
일반적인 프로그램은, 아래와 같이 여러 DLL 들을 로드합니다.

위 그림에서 MFCApplication1.exe는 시스템 DLL(kernel32.dll, user32.dll, gdi32.dll 등등)뿐만 아니라 사용자가 만든 DLL(MATHFUNCTION.DLL)도 로하고 있습니다.
어찌 됐던 이런 DLL은 프로그램이 자신의 기능을 수행할 때 언제든지 Load가 가능합니다.
DLL 인젝션은 외부에서 특정한 DLL을 로드하게 만드는 방법입니다.

기본적인 개념은 알아봤고 다음 글에서 직접 코드를 만들어볼 예정인데 그 전에 아래 사항을 준비해주시기 바랍니다.

1. 아래와 같이 프로젝트를 생성해주시기 바랍니다.

MFCApplication1.exe으로 Test.exe에 MFCLibrary.dll을 인젝션할 예정입니다.

2. 아래 링크에서  Sysinternals Suite를 다운받아주시기 바랍니다.

개발할 때 매우 유용한 툴입니다. MS에서 공식적으로 지원합니다.

Sysinternals Suite 다운로드 링크

위 사항을 완료해주시고, 다음 글에서 DLL 인젝션 코드를 알아보겠습니다.