установка дебагрегистров в р3 через контекст потока

Тема в разделе "WASM.HEAP", создана пользователем wsd, 16 июн 2008.

  1. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    что-то с недосыпа не врублюсь почему он не ставиться :dntknw:
    перед инитом дебугрегистры в нулях и после установки почему-то тоже
    вот тестовый пример
    Код (Text):
    1. using namespace std;
    2.  
    3. void ShowDebugContext(PCONTEXT pCon)
    4. {
    5.     cout << "Dr0\t" << pCon->Dr0 << endl;
    6.     cout << "Dr1\t" << pCon->Dr1 << endl;
    7.     cout << "Dr2\t" << pCon->Dr2 << endl;
    8.     cout << "Dr3\t" << pCon->Dr3 << endl;
    9.     cout << "Dr6\t" << pCon->Dr6 << endl;
    10.     cout << "Dr7\t" << pCon->Dr7 << endl;
    11. }
    12.  
    13. DWORD WINAPI ThreadProc(
    14.   LPVOID lpParameter)
    15. {
    16.     Sleep(1000);
    17.     cout << "HI thread" << endl;
    18.     return 0;
    19. }
    20.  
    21.  
    22. int _tmain(int argc, _TCHAR* argv[])
    23. {
    24.     cout << "start" << hex << endl;
    25.     DWORD dwThr1;
    26.     HANDLE hThr1;
    27.     hThr1 = CreateThread( NULL, NULL, ThreadProc, NULL, CREATE_SUSPENDED, &dwThr1);
    28.     CONTEXT CNTX;
    29.     GetThreadContext( hThr1, &CNTX);
    30.     ShowDebugContext( &CNTX);
    31.     HMODULE hm = LoadLibrary(_T("kernel32.dll"));
    32.     CNTX.Dr0 = (DWORD)GetProcAddress( hm, "Sleep");
    33.     // ...
    34.     // ...
    35.     SetThreadContext( hThr1, &CNTX);
    36.     GetThreadContext( hThr1, &CNTX);
    37.     ShowDebugContext( &CNTX);
    38.    
    39.     getch();
    40.     return 0;
    41. }
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Перед вызовом флаг установи в контексте: ContextFlags=CONTEXT_DEBUG_REGISTERS.
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Clerk
    точно!
    огромное спасибо!