본문 바로가기
Reversing/리버싱 핵심 원리

[리버싱 핵심 원리] 24장, DLL 이젝션

by Y06 2021. 12. 2.

DLL 이젝션(DLL Ejection)은 프로세스에 강제로 삽입한 DLL을 빼내는 기법이다. 기본 동작 원리는 CreateRemoteThread API를 이용한 DLL 인젝션(Injection)의 동작원리와 같다.

 

DLL 이젝션 동작 원리

CreateRemoteThread() API를 이용한 DLL 인젝션의 동작원리는 아래와 같다.

대상 프로세스로 하여금 LoadLibrary() API를 호출하도록 만드는 것

 

마찬가지로 DLL 이젝션의 동작 원리도 아래와 같다.

대상 프로세스로 하여금 FreeLibrary() API를 호출하도록 만드는 것

 

즉 CreateRemoteThread()의 IpStartAddress 파라미터에 FreeLibrary() API 주소를 넘겨주고, IpParameter 파라미터에 이젝션할 DLL의 HANDLE을 넘겨두면 된다.

 

DLL 이젝션 실습

notepad에 인젝션된 myhack.dll을 이젝션해보도록 하자.

파일을 준비한다.

파워쉘에서 이젝션을 확인한다.

Process Explorer를 통해 확인하면 myhack.dll이 안 보이는 것을 볼 수 있다.