본문 바로가기

스터디/파이썬 해킹 프로그래밍

DLL 인젝션

DLL 인젝션 기술은 사용 목적의 선악에 구분 없이 오래 사용되어 왔다.

여기저기 다양한 곳에서 DLL인젝션이 이용되는 것을 볼 수 있다. 마우스 커서를 화려하게 바꿔주는 윈도우 쉘 익스텐션에서 부터 광범위 하게 이용된다.




프로세스가 DLL을 메모리에 로드하게 만들기 위해 kernel32.dll 의 LoadLibrary() 를 이용한다.


HMODULE LoadLibrary(

LPCSTR lpFileName

);


 lpFileName 파라미터는 단순히 로드하려는 DLL의 경로를 나타낸다. 그런데 로드하려는 DLL 경로 문자열의 포인터가 파라미터로 전달되는 LoadLibraryA를 원격 프로세스가 호출하게 만들어야 한다. 그렇게 하려면 먼저 LoadLibraryA의 주소를 구하고 로드할 DLL의 이름을 써 넣어야 한다. 그리고 CreateRemoteThread() 함수를 호출한다. lpStartAddress 파라미터에는 LoadLibraryA 의 주소를, lpParameter 파라미터에는 로드할 DLL경로의 주소를 전달한다. CreateRemoteThread() 함수가 실행되면 마치 원격 프로세스 자신이 DLL 로드를 요청한 것처럼 LoadLibraryA가 호출된다.


---------------소스 참고---------

'스터디 > 파이썬 해킹 프로그래밍' 카테고리의 다른 글

백도어 제작  (0) 2015.02.16
코드 인젝션  (0) 2015.02.16
DLL과 코드 인젝션  (0) 2015.02.16
Immunity 디버거를 이용한 하드 후킹  (0) 2015.02.15
PyDbg 를 이용한 소프트 후킹  (0) 2015.02.15