Ты подразумеваешь под ядром ntoskrnl? Иначе ndis это тоже ядро. Да в каких-то местах это будет работать, но не везде, CreateProcessNotifyRoutine тоже в произвольном контексте зовется. Это по теме "невидимого" сплайсинга в режиме ядра и содержательнее чем флуд "офигеть"
А вы что-нибудь по теме умеете? Например PG кроссвиндозно отключать? Нет? Так может вам с Клерком отдельную темку создать и в ней изучать "невидимый" сплайс? Или тогда это не круто будет? Не хочу обидеть, но вами по теме топика не было сказано ничего полезного. Единственный кто хотел помочь это Great, х64, Sol_Ksacap. Вы только не обижайтесь, ну бывает такое, не ваш уровень
Great P.S. Не думал проапгрейдить проц до поддержки 64 бит? Сейчас они везде, стоимость близка к нулевой... Я даже уже не помню когда у меня был проц без поддержки х64. Стопорится на 32 битах есть архаичность, уже 128 и даже 256 бит разрабатывают в винду 8 и т.д.
Я, кстати, по этому поводу тут когда-то создавал тему, но ничего так и не выяснилось, было бы интересно узнать в чем все-таки дело.
d2k9 Финансовый вопрос встает остро) Сейчас постепенно решаю. Вот на новой работе - даже тут x86, правда двухъядерный (а дома у меня обычный селерон на ноуте и амд семпрон на сервере). Буду тут свой отладчик тестить, а то раньше даже негде было многопроцессорность/многоядерность потестить.
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$ Так что если кто-то курит или пьёт вывод - бросьте хоть на месяц
Velheart Очень глупая ошибка в приведённом коде, я забыл про необходимость выравнивания страницы на границу 4M, ведь в этом случае 22 бита линейного адреса составляют смещение в странице. Выделялась память с выравниванием на 4K, соответственно адреса формировались не валидные. Необходимо выделить 4M памяти выравненных на 4M, затем загрузить физический адрес в PD с соответствующей маской. d2k9 Согласен что техника оффтоп, также как и мехонизмы которые Shadow Walker использовал.) По теме - разберитесь вначале в юзермоде, как дизасм юзать и пр., тогда и в ядре всё получится.
Ты пришел сюда за помощью и для этого берешь людей людей на понт? Как отключать PG написано в MSDN, для этого ОС загружается в режиме отладки, про это и пишет x64 столь загадочно. Но тебя такое наверное не устраивает, а если разобраться, нужен обход PG? Тогда решением могло бы быть сделать изменения невидимыми для PG, о чем и намекает Клерк. Это не тривиально, но не является оффтопом, как твои размышления сколько нужно не курить, что бы хватило денег на x64 и он отписал стотью в свой блог.) Если разобраться, окажется что тебя с 32х битными системами и PG не интересует, проблема с модификацией SSDT наверняка была из-за кода, которым это пытался сделать, что он из себя представляет, cli + сброс WP бита? Такой код ошибочен, почитай WDK как следует работать с _физической_ памятью.
Здесь немного говорили за пг. Удивлен, вроде грамотные люди, а всякую чушь пишут. Пг обходится на раз, загрузчик можно не трогать
Хорошо, в таком случае приведи код, который обходит PG раз и навсегда, который можно использовать в легальных приложениях, и при этом этот код: 1. Работает только для одного конкретного драйвера. 2. Не уронит систему в очередной версии PG или с выходом PG-related хотфикса.
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 в любую другую папку и там дизасемблить