Сплайсинг в нулевом кольце на новых версиях ядра (Виста, Вин7)

Тема в разделе "WASM.NT.KERNEL", создана пользователем d2k9, 31 янв 2010.

  1. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Clerk
    Ну приведённый код это оффтопик, не по теме он сплайсинг в режиме ядра.
     
  2. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Ты подразумеваешь под ядром ntoskrnl? Иначе ndis это тоже ядро. Да в каких-то местах это будет работать, но не везде, CreateProcessNotifyRoutine тоже в произвольном контексте зовется.
    Это по теме "невидимого" сплайсинга в режиме ядра и содержательнее чем флуд "офигеть" ;)
     
  3. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    А вы что-нибудь по теме умеете? Например PG кроссвиндозно отключать? Нет? Так может вам с Клерком отдельную темку создать и в ней изучать "невидимый" сплайс? Или тогда это не круто будет? Не хочу обидеть, но вами по теме топика не было сказано ничего полезного. Единственный кто хотел помочь это Great, х64, Sol_Ksacap. Вы только не обижайтесь, ну бывает такое, не ваш уровень ;)
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    d2k9
    путаетесь в показаниях))
    а вообще ладно, закругляюсь - раз речь про х64, то это не для меня.
     
  5. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Да там был баг в коде вот и бсодило - пофиксил и теперь полёт нормальный :)
     
  6. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Great
    P.S. Не думал проапгрейдить проц до поддержки 64 бит? Сейчас они везде, стоимость близка к нулевой... Я даже уже не помню когда у меня был проц без поддержки х64. Стопорится на 32 битах есть архаичность, уже 128 и даже 256 бит разрабатывают в винду 8 и т.д.
     
  7. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Я, кстати, по этому поводу тут когда-то создавал тему, но ничего так и не выяснилось, было бы интересно узнать в чем все-таки дело.
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    d2k9
    Финансовый вопрос встает остро) Сейчас постепенно решаю.
    Вот на новой работе - даже тут x86, правда двухъядерный (а дома у меня обычный селерон на ноуте и амд семпрон на сервере). Буду тут свой отладчик тестить, а то раньше даже негде было многопроцессорность/многоядерность потестить.
     
  9. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Great
    http://www.fcenter.ru/products.shtml?eshop/act=h:a:0:3:a:a:a:1:a:1:30:y:1:1&oper=46959::::
    ~30$ за Intel EMT64 2.8GHz
    Если не курить и не пить месяц из расчёта 2уе в день на 31 в месяце можно купить
    http://www.fcenter.ru/products.shtml?eshop/act=h:a:0:3:a:a:a:1:a:2:30:y:1:1&oper=75199::::
    Intel "Pentium Dual-Core E5200" (2.50ГГц, 2МБ, 800МГц, EM64T) Socket775 ~64$
    Так что если кто-то курит или пьёт вывод - бросьте хоть на месяц :)
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Velheart
    Очень глупая ошибка в приведённом коде, я забыл про необходимость выравнивания страницы на границу 4M, ведь в этом случае 22 бита линейного адреса составляют смещение в странице. Выделялась память с выравниванием на 4K, соответственно адреса формировались не валидные. Необходимо выделить 4M памяти выравненных на 4M, затем загрузить физический адрес в PD с соответствующей маской.
    d2k9
    Согласен что техника оффтоп, также как и мехонизмы которые Shadow Walker использовал.)
    По теме - разберитесь вначале в юзермоде, как дизасм юзать и пр., тогда и в ядре всё получится.
     
  11. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Ты пришел сюда за помощью и для этого берешь людей людей на понт?

    Как отключать PG написано в MSDN, для этого ОС загружается в режиме отладки, про это и пишет x64 столь загадочно. Но тебя такое наверное не устраивает, а если разобраться, нужен обход PG?

    Тогда решением могло бы быть сделать изменения невидимыми для PG, о чем и намекает Клерк. Это не тривиально, но не является оффтопом, как твои размышления сколько нужно не курить, что бы хватило денег на x64 и он отписал стотью в свой блог.)

    Если разобраться, окажется что тебя с 32х битными системами и PG не интересует, проблема с модификацией SSDT наверняка была из-за кода, которым это пытался сделать, что он из себя представляет, cli + сброс WP бита? Такой код ошибочен, почитай WDK как следует работать с _физической_ памятью.
     
  12. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Нет.
     
  13. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Здесь немного говорили за пг. Удивлен, вроде грамотные люди, а всякую чушь пишут.
    Пг обходится на раз, загрузчик можно не трогать
     
  14. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Хорошо, в таком случае приведи код, который обходит PG раз и навсегда, который можно использовать в легальных приложениях, и при этом этот код:

    1. Работает только для одного конкретного драйвера.
    2. Не уронит систему в очередной версии PG или с выходом PG-related хотфикса.
     
  15. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Трейс решает
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    medstrax1
    А как по вашему трассировать, если KiDebugRoutine и IDT защищены ?
     
  17. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    J0E
    Ну вообще-то мы тоже не лыком шиты и патчинг производим даже с учётом SMP - KeRaiseIrql(), может слыхал о таком? А тему-то читать внимательно нельзя было? Здесть про патчинг SSDT ни слова нету, здесь обсуждается сплайсинг - это техника такая, когда в начало функции нужный джамп внедряется. А если посмотреть внимательно тему, потом было написано, что всё уже работает. И ты может очень умный если пишешь про включение режима дебага ядра для оффициального отключения PG - это _ОЧЕНЬ_ крутой способ, его никто не знает, использует только элитО, советую юзать всё время. Далее, касаемо юзабельного отключения PG есть только 2 варианта:
    1) патчинг лоадера полуофф и отключает PG для всей системы - уже юзается некоторыми АВ по сведениям х64
    2) куча кода для поиска в режиме ядра всех потоков c DPC, ExpWorkerThread & KeBugCheckEx
    Уверен, если бы ты читал внимательно uninformed.org, то тоже ?смог? бы реализовать 2 вариант как сделал я. Но в итоге получилась куча кода не стабильного к разным версиям ОС и разным патчам/обновлениям установленным на ОС. По 1 варианту я не уверен, что ты его сможешь найти либо самостоятельно изобрести, но он на самом деле весьма лёгок и заключается в умении патчинга образов на диске и работой с консолью bcdedit. Ах, да, чуть не забыл будут вопросы, обращайся, я тебе помогу - посоветую включить режим дебага ядра.
    Вывод: отключение PG не есть выход, необходимо искать иные варианты реализации конкретной задачи.

    Clerk
    Эх, развела меня IDA64 - загрузил из C:\Windows\System32\ntoskrnl.exe и думал что дизасемблю ре64, тока я в шоке был что там нету регистров х64. Глянул в диспетчере задач оказывается у меня ида64 32х битный процесс и для него применяется WOW64 редирект. Решение было простым - скопировать из System32 в любую другую папку и там дизасемблить :)
     
  18. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Не отключает и не для всей.

    Да.

    Желательно.
     
  19. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    x64
    Мой вариант для всей, а что там ты видел не знаю. Конечно было бы хорошо выборочно.
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Пропатчить начало верификатора, либо вобще код связанный с PG - чем не способ ?