Windows7 64 비트에서 다른 프로세스의 EBP 레지스터 값을 가져 오려고합니다.() 반환GetThreadContext는 EBP = 0을 반환합니다.
static CONTEXT threadContext;
memset(&threadContext, 0, sizeof(CONTEXT));
threadContext.ContextFlags = CONTEXT_FULL;
bool contextOk = GetThreadContext(threadHandle, &threadContext);
EIP 값이 좋아 보이지만, EBP는 = 0 또한 사용하여 시도 WOW64_GetThreadContext하지만 ... GetLastError 도움이되지 않았다 이것에 대한
나는이 같은 GetThreadContext을 사용하고 있습니다 0 그래서 괜찮을 거에요. 이 스레드를 SuspendThread로 일시 중단하고 스레드를 샘플링 할 때마다 발생하지 않습니다.
어떻게 될 수 있습니까?
"실행중인 스레드에 유효한 컨텍스트를 가져올 수 없습니다. 'GetThreadContext'를 호출하기 전에 스레드를 일시 중단하려면'SuspendThread' 함수를 사용하십시오." MSDN –
네, 저도 그렇게했습니다 :) – Idov
프로세스 (또는 적어도 스레드)가 중단 되었기 때문에 실제 디버거를 연결하여 EBP가 무엇인지 * 볼 수 있습니다. –