получение CPL 0

Тема в разделе "WASM.BEGINNERS", создана пользователем t00x, 26 май 2008.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Суспендить поток необязательно.
     
  2. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Код (Text):
    1.     xor ecx, ecx
    2.     push IdThread
    3.     push ecx
    4.     push ecx
    5.     push ThreadFunc
    6.     push ecx
    7.     push ecx
    8.     call [CreateThread]
    9.     mov [hThread], eax
    10.  
    11. ;   mov eax, dword [hThread]
    12. ;   push eax
    13. ;   call [SuspendThread]
    14.  
    15.     push _context
    16.     mov dword [_context.ContextFlags], CONTEXT_ALL
    17.     mov eax, dword [hThread]
    18.     push eax
    19.     call [GetThreadContext]
    20.  
    21.     mov eax, dword [_context.EFlags]
    22.     mov esi, str_out
    23.     call BinToHex_32
    24.  
    25.     push    0
    26.     push    _caption
    27.     push    str_out
    28.     push    0
    29.     call    [MessageBoxA]
    30.  
    31.     push    0
    32.     call    [ExitProcess]
    33.  
    34. proc ThreadFunc
    35.     mov eax, 0x12345678
    36. @@:
    37.     add ecx, 1
    38.     loop @B
    39.     ret
    40. endp
    все вызовы API отрабатывает без ошибок, структура прилагается,
    в результате пустой контекст :dntknw:((.
    P.S. без суспенда тоже самое :dntknw:
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    А какой он по твоему должен быть, если новый поток еще не запустился ?
    Хотя бы sleep для "приличия" поставь, или еще лучше на GetCurrentThread проверь для начала

    PS: для получения контекста суспендить поток не обязательно, просто если не суспендить, то неизвезтно какому моменту времени будет соответсвовать состояние регистров
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    t00x
    Гыы, просто супер :-D
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Не знаю как из под 95, но под XP векторы [30%FF] - заглушки(KiUnexpectedInterruptTail). Попробуй вызвать :)
    Чел уже второй день пытается правильные параметры в NtGetContextThread скормить :lol:
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А по-моему, ntvdm запрещал
     
  7. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    из нового потока тоже не получает контекст главного потока.
    может структуру CONTEXT неправильно перекодил?
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    t00x
    Ты прикалываешся ?
    Local Context:CONTEXT
    mov Context.ContextFlags,CONTEXT_DEBUG_REGISTERS
    invoke ZwGetContextThread, ThreadHandle, addr Context