что-то с недосыпа не врублюсь почему он не ставиться перед инитом дебугрегистры в нулях и после установки почему-то тоже вот тестовый пример Код (Text): using namespace std; void ShowDebugContext(PCONTEXT pCon) { cout << "Dr0\t" << pCon->Dr0 << endl; cout << "Dr1\t" << pCon->Dr1 << endl; cout << "Dr2\t" << pCon->Dr2 << endl; cout << "Dr3\t" << pCon->Dr3 << endl; cout << "Dr6\t" << pCon->Dr6 << endl; cout << "Dr7\t" << pCon->Dr7 << endl; } DWORD WINAPI ThreadProc( LPVOID lpParameter) { Sleep(1000); cout << "HI thread" << endl; return 0; } int _tmain(int argc, _TCHAR* argv[]) { cout << "start" << hex << endl; DWORD dwThr1; HANDLE hThr1; hThr1 = CreateThread( NULL, NULL, ThreadProc, NULL, CREATE_SUSPENDED, &dwThr1); CONTEXT CNTX; GetThreadContext( hThr1, &CNTX); ShowDebugContext( &CNTX); HMODULE hm = LoadLibrary(_T("kernel32.dll")); CNTX.Dr0 = (DWORD)GetProcAddress( hm, "Sleep"); // ... // ... SetThreadContext( hThr1, &CNTX); GetThreadContext( hThr1, &CNTX); ShowDebugContext( &CNTX); getch(); return 0; }