CreateProcess + NtCreateThread + Windows 7

Тема в разделе "WASM.WIN32", создана пользователем Mentor, 15 окт 2010.

  1. Mentor

    Mentor New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2010
    Сообщения:
    67
    Удивительная штука выясняется. Похоже в семерке при создании процесса не дергается NtCreateThread. Никто не в курсе с чем связаны такие кондибобрики?
     
  2. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    поток создаётся из ринг0. похукать не получается? есть другие методы, на форуме уже было это, используйте поиск.
     
  3. seda

    seda New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2010
    Сообщения:
    47
    Адрес:
    Россия
    Достаточно хукнуть ZwResumeThread. Этого вполне достаточно в большинстве случаев. Работает и в XP и в Vista и в W7
     
  4. Mentor

    Mentor New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2010
    Сообщения:
    67
    Спасибо за помощь, уже сам вкурил.
    Созданием процесса теперь занимается NtCreateUserProcess, которая и создает поток. Хорошо хоть NtResumeThread из юзермода дергается.

    похукать поучается, заставить работать на семерке не получалось )
     
  5. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    может Rtl? а не Nt? Чем и везде?
    ADD: А да 7ffe0300,Rtl - проще вызвать
     
  6. 100gold

    100gold New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2010
    Сообщения:
    165
    Начиная с Vista NtCreateThreadEx используется, а NtCreateThread для совместимости
    Код (Text):
    1. typedef struct _CREATE_THREAD_EX_BUFFER {
    2.     ULONG Length;
    3.     ULONG Unknown1;
    4.     ULONG Unknown2;
    5.     PCLIENT_ID cid;
    6.     ULONG Unknown4;
    7.     ULONG Unknown5;
    8.     ULONG Unknown6;
    9.     PVOID *TEB;
    10.     ULONG Unknown8;
    11. } CREATE_THREAD_EX_BUFFER,*PCREATE_THREAD_EX_BUFFER;
    12.  
    13. NTSTATUS
    14. NtCreateThreadEx(
    15.     OUT PHANDLE ThreadHandle,
    16.     IN ACCESS_MASK DesiredAccess,
    17.     IN POBJECT_ATTRIBUTES ObjectAttributes,
    18.     IN HANDLE ProcessHandle,
    19.     IN ULONG InitialEip,
    20.     IN ULONG InitialValueInStack OPTIONAL,
    21.     IN ULONG ThreadState,    /// Old "BOOLEAN CreateSuspended"
    22.     IN ULONG StackZeroBits,
    23.     IN ULONG SizeOfStackCommit OPTIONAL,
    24.     IN ULONG SizeOfStackReserve OPTIONAL,
    25.     OUT PCREATE_THREAD_EX_BUFFER ClientId
    26. );