본 문서는 참고 / 공부용으로 수집한 문서로서 저자는 Jerald Lee 임을 밝힘니다.

 

[Windows_Hook]3.Debug_Technique.pdf

 

사용자 모드 디버거는 타겟 프로세스를 디버깅 하기 위해 CreatePRocess API를 이용하는데 함수의 전달인자 중 dwCreationFlags 변수에 DEBUG_ONLY_THIS_PROCESS 값을 사용하여 디버깅을 시작한다.

그리고 발생하는 다양한 이벤트들을 받기 위해 WaitForDebugEvent API를 호출하고 특정한 이벤트를 처리한 후에는 ContinueDebugEvent 함수를 호출한다.

이 방법의 문제점은 디버거가 실행되는 동안 타겟 프로세스도 멈춰있다는 것인데 이 문제는 멀티 스레드를 사용해서 해결할 수 있다.... ?

WaitForDebugEvent API가 호출됐을 때, 전달되는 이벤트 정보를 저장하는 DEBUG_EVENT 구조체는 잘알아두자.

디버그가 DEBUG_EVENT 구조체의 Union 안에 나열된 이벤트를 처리하는 동안 타겟 프로세스는 멈춰있게 되며 ContinueDebugEvent 함수가 호출되면 타겟 프로세스는 다시 실행이 된다.

 

+ Recent posts