본문 바로가기

컴터 때찌/Error

[Error] Leo_Dbg.exe

/**************************************************************
11 04월 07일
 Loop와 Thread 생성, 디버거의 이벤트 별로 switch & case 문을 만드는 등
디버거의 틀을 만들기 시작함
코딩할때마다 엄청난 에러를 불러 오는 나 레오파덕은,
같은 실수를 반복하지 않기를 바라는 마음으로 에러들을 정리함 
**************************************************************/

/**************************************************************
TCHAR *szCmdLine=L"leo.exe"    =====>   TCHAR szCmdLine[]=L"leo.exe"
Debuggee의 이름을 받아오는 변수인 szCmdLine 선언에서 코딩 실수
**************************************************************/


/************************************************************** DEBUG_ONLY_THIS_PROCESS 플래그로 CreateProcess 함수를 사용해서 열었는데
Debuggee가 꼼짝도 안함
WaitForDebugEvent 를 사용하니 Debuggee가 진행 됬음
**************************************************************/

/************************************************************** WaitForDebugEvnet DEBUG_EVENT 이벤트 받는데
이벤트는 DEBUG_EVNET.dwDebugEventCode 요기 안에 있음  **************************************************************/

/*#########################################################3 Thread의 Context에 접근하기 위해선 권한이 필요하더라 
아래는 정의 되어 있는  ContextFlag와 그 주석들

DWORD ContextFlags; // // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT // included in CONTEXT_FULL. ############################################################*/ 


/*################################################################
Debuggee.context.ContextFlags = CONTEXT_ALL;     //releated thread context
DWORD er = GetLastError();
GetThreadContext(Debuggee.hThread, &Debuggee.context);

위 소스 처럼 ContextFlags 설정해주고 GetThreadContext 함수로 context를 얻어 오려고하는데
0xCCCCCCCC 같은 쓰레기가 옴 -_-
GetLastError()로 확인해 보니 6번(핸들이 잘못되었습니다) 이 반환됨
그래서 핸들 Debuggee.hThread를 보니까
 

Debuggee.hThread = db_event.u.CreateThread.hThread;  // 213 page 

이런식으로 선언 되어 있음 -_- 
CreateThread가 아니라 생성된 프로세스에 대한 Thread를 해야 하는데 

아래 처럼 바꾸니 됬음
Debuggee.hThread = db_event.u.CreateProcessInfo.hThread;

아름다운 reg들이 제대로 나오기 시작함
##################################################################*/