2015년 10월 7일 수요일

DLL Injection...(1)

DLL Injection을 이해하기 전에 우선 hook에 대해서 공부해보자.

SPY++ : Windows OS의 Visual Studio에서 제공하는 대표적인 메세지 hook 프로그램

SetWindowsHookEX() API를 사용하면 Hook을 구현하는데 편하다.




hook procedure :  운영체제가 호출해주는 콜백함수

메시지 hook을 걸 때 hook procedure는 DLL 내부에 존재해야 하며, 그 DLL의 인스턴스 핸들이 바로 hMod이다.

dwThreadID : 0을 넣으면 글로벌 훅(Global Hook)이 설치되며, 실행 중인(그리고 향 후 실행될)모든 프로세스에 영향을 미친다.

KeyHook.dll : 프로시저(KeyboardProc)가 존재하는 DLL파일이다.

키보드 후킹 예제 : http://yokang90.tistory.com/60

Hookmain.cpp



KeyHook.cpp



Ollydbg로 dll 디버깅 할 땐


옵션 -> Break on new module(DLL)을 체크
그럼 Executable modules창을 통해 KeyHook.dll이 로딩되는 것을 확인 할 수 있다. 그 후 KeyHook.dll을 더블클릭하면 KeyHook.dll의 EP주소로 이동하게 된다.(Break on new module(DLL)의 체크를 해제해준다.)

댓글 없음:

댓글 쓰기