Установка DRx в NtCreateThread

Тема в разделе "WASM.WIN32", создана пользователем kropalik, 31 авг 2006.

  1. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    такая проблема - в перехватчике NtCreateThread
    (методом записи jmp new_NtCreateThread в начало)
    вроде задаются начальные значения регистров
    (во всяком случае EIP и ESP) вот код который
    должен ставить хардверный бряк во всех создаваемых
    потоках:

    Код (Text):
    1. u_long __stdcall new_NtCreateThread(PHANDLE ThreadHandle,ACCESS_MASK DesiredAccess,void* ObjectAttributes,HANDLE ProcessHandle,u_long* ClientId,PCONTEXT ThreadContext,void* InitialTeb,BOOLEAN CreateSuspended)
    2. {
    3. u_long  result;
    4. char    buf[200];
    5.  
    6. скипнуто
    7.  
    8.     ThreadContext->Dr0=LdrLoadDll;
    9.     ThreadContext->Dr7=0x101;
    10.     ThreadContext->ContextFlags|=CONTEXT_DEBUG_REGISTERS;
    11.     result=old_NtCreateThread(ThreadHandle,DesiredAccess,ObjectAttributes,ProcessHandle,ClientId,ThreadContext,InitialTeb,CreateSuspended);
    12.  
    13.     log("new_NtCreateThread %X %X",ThreadContext->Eip,ThreadContext->Esp);
    14.  
    15. скипнуто   
    16.  
    17.     return result;
    18. };
    только как выяснилось бряки не устанавливаются
    (OllyDbg показывает DR0==0) может это так и должно быть ?