Изменение отладочных регистров из user mode

Тема в разделе "WASM.WIN32", создана пользователем sergegers, 12 апр 2011.

  1. sergegers

    sergegers New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2008
    Сообщения:
    172
    Наткнулся на следующую проблему, программа сбрасывает hardware breakpoints, в связи с чем вопрос: какие есть способы изменять DRx из user mode, кроме SetThreadContext, NtSetContextThread?
    И вопрос №2: пользователь из без прав локального администратора не имеет привилегии устанавливать драйвер, я правильно понимаю?
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    sergegers
    Для загрузки драйверов можно использовать три способа:
    1) использовать API Service Control Manager'a.
    2) прописывать драйвер в реестре вручную и загружать его с помощью функции ZwLoadDriver. Вы создаете в реестре минимум необходимых записей, запускаете драйвер и удаляете его раздел из реестра.
    3) загрузить драйвер при помощи ZwSetSystemInformation.
    смотри здесь
    А здесь пример повышения привелегий
     
  3. sergegers

    sergegers New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2008
    Сообщения:
    172
    ну это стандартное получение привилегии , как я понимаю. то есть AdjustTokenPrivileges может включить привилегию, если она есть, а SE_LOAD_DRIVER_NAME по дефолту есть только у администраторов. т.е. 1 способ отпадает, 2й видимо тоже, 3 способ, как я понял, использует недокументированную константу SystemLoadAndCallImage, и, судя по всему, закрыт в новых виндах и последних сервис паках xp (если кто точно знает, работает ли 3й способ на xp sp3 (32 бит), отпишитесь pls)

     
  4. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    sergegers
    in-process - в обработчиках SEH, VEH, UEF можно ставить и контролировать drX, в других процессах - через уже названные XXXThreadContext
     
  5. Indyz

    Indyz New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2011
    Сообщения:
    7
    sergegers
    NtContinue. Оминь.
     
  6. sergegers

    sergegers New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2008
    Сообщения:
    172
    ага. спасибо. я как раз над этим думаю
     
  7. sergegers

    sergegers New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2008
    Сообщения:
    172
    спасибо. это толкнуло меня в правильном направлении.
     
  8. Indyz

    Indyz New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2011
    Сообщения:
    7
    sergegers
    Гдето на крабе вроде был древний кодес инде, который позволял в люзермодах выполнить Mov Dr7,eax. Там тупо диспатч фолта и эмуляция. Системный диспетчер фолтов грузит контекст через NtContinue, тоесть достаточно контекст сформировать. Есчо был стрёмный NtRaiseException, но видимо вам оно не нужно.
     
  9. sergegers

    sergegers New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2008
    Сообщения:
    172
    ну да. я на стороне добра. мне нужно не давать сбрасывать hbps. ну я нашел хорошую статью, где этот момент расписан http://www.wasm.ru/article.php?article=packers2

     
  10. Indyz

    Indyz New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2011
    Сообщения:
    7
    sergegers
    Чтоб не дать сбросить в юзермоде Dr-часть контекста необходимо установить свой хэндлер фолтов последним в цепочке(ну разумеется гет-/сет- контекст сервисы будут работать и это обойти в юзермоде проблемно, но решаемо, например установкой ьрейков до критичного кода, вопрос не в том). А последним сех быть не может, в силу очевидных причин, так же как и вех. Значит нужно зарегать первым VEH, установить блокировку критической секции(если читали то знаете что это) и выполнять маршрутизацию(говоря по простому - замена линка в стековом фрефме на свой код, выполянющий откат). Ну это в общих чертах. А так накой вобще железячные брейки нужны не представляю.
     
  11. sergegers

    sergegers New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2008
    Сообщения:
    172
    не, я из ядра буду делать

     
  12. Indyz

    Indyz New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2011
    Сообщения:
    7
    Тогда нужно т-фрейм корректировать перед возвратом. Но дело гиблое конечно, вобще сопротивляться бесполезно(в ядре всмысле) - всё элементарно обходится. Удачи.
     
  13. sergegers

    sergegers New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2008
    Сообщения:
    172
    вы похоже не поняли. плохая программа в 3 кольце, а я буду контролировать драйвером