NtCreateThread или NtResumeThread?

Тема в разделе "WASM.BEGINNERS", создана пользователем Clyde, 18 апр 2009.

  1. Clyde

    Clyde New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    154
    Обратил внимание что многие малварки перехватывают NtCreateThread для внедрения в созданный процесс. Тут же возник вопрос, зачем перехватывать NtCreateThread, если можно перехватить NtResumeThread и по хендлу определить PID? Ну и если этот PID отличается от текущего процесса внедрить перехватчик. Проясните пожалста, зачем еще нужен перехват NtCreateThread?
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clyde
    Что значит "ещё"? Вполне достаточно перехватить только NtCreateThread. Преимущества перехвата NtCreateThread по сравнению с NtResumeThread очевидны: при перехвате NtCreateThread перехватчик получает беспалевный доступ к огромной куче информации, включая хэндл процесса и полный контекст потока, что является чуть ли не решающим фактором в беспалевности распространения перехватов на все процессы. К тому же по большому счёту не факт, что все процессы будут пользоваться стандартным загрузчиком. Соответственно первичный поток не обязан создаваться в состоянии suspended.
     
  3. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    а что за способы воспользоваться "нестандартным"?
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    deLight
    Эм... самому написать. Как захочу, так и создам в своём загрузчике первичный поток.
     
  5. Clyde

    Clyde New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    154
    l_inc
    под словaми "зачем еще" я имел ввиду "в каких еще целях"
    Альтернативный загрузчик - веский аргумент, спасибо
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clyde
    ИМХО беспалевность — более веский аргумент. :) Ну это дело вкуса. Лично меня не вдохновляло, когда касперски на пару с аутпостом при каждом новом процессе орёт, что миру пришёл конец. Это надо было только при загрузке системы несколько сотен раз клацнуть, что всё в порядке, не забыв вырубить колонки, спасая нервы. А уж если не для себя пишете, то "пользователю" :derisive: Вашего перехватчика вопли антивируса уж точно на пользу не пойдут.
     
  7. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    ну загрузчик ведь тоже загрузить нужно
    может я не понял - он просто так в памяти появится?
     
  8. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    l_inc
    но твой загрузчик будет загружен системным, а значит задача инжекта выполнена..
    что я не учел??
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    deLight
    Загрузчик будет загружен системным? :) В каком смысле?
    Вот, предположим, у меня есть навороченный текстовый редактор, способный создавать новые процессы посредством собственного загрузчика, который не вызывает NtResumeThread. Соответственно перехватчик, основанный только на NtResumeThread, не распространится на дочерние процессы моего текстового редактора.