Хотел уточнить как лучше быть. Исходные - есть процесс с аппаратным депом, который до кучи ставит флажок перманент на странички. Ставит деп в рантайме (хотя так то не важно). Хотел бы узнать по NtSetInformationProcess еще актуально? Пока ревершу и перепроверяю ядро от 10, но малоли в курсе. Короче как бы мне сбросить деп, но без шума гама (да я могу залезть на стартре отловить что надо и не дать установить, но так не хотелось бы). Да.. есть еще момент и его пока разбираю. Кейс в том, что дергается NtSetInformationProcess через h-gates из-под wow для нативного 64 битного. Ну это если это еще рабочи вариант в принципе конечно. И плиз. Давайте не как обычно обсуждать =) Ну вы понели)) Так как 10 апается со скорость электровеника, то хз, что тут актуально, поэтому спросил. Заранее спасибо.
superakira, Эти механизмы либо наследуются, те отключить если запущены нельзя, либо для этого нужны соответствующие права. Это всё защита от OP, иначе просто получите соответствующие события и обработайте их(так как ваш код уже начал выполняться, то такая защита не имеет смысла). ProcessDynamicCodePolicy может вызвать проблемы, так как часто нужна исполняемая память. Но опять же, если ваш код получил управление, то выделять исполняемые буфера не особо нужно, например код можно выполнить через его эмуляцию, что не требует исполняемой памяти.
superakira, Исполняемая память нужна для быстрого исполнения - прямого или динамической эмуляции, во втором случае поток инструкций копируется в буфер и там исполняется, для получения управления после исполнения блока дописывается ветвление. Обычная эмуляция это когда инструкция разлаживается на примитивы, имитируется её работа. Так работают ав эмуляторы, некоторые виртуальные машины или dbi инструменты, типо пина. Тогда не нужна исполняемая память, так как инструкция только читается(r-df), но есть недостатки у такой эмуляции - значительная просадка профайла(тормозит), очень большой размер эмулятора и как следствие его не стабильность.
superakira, Это единственный способ что то выполнить, если аллокация X-памяти заблокирована. Опишите задачу более подробно.
superakira, Динамическая эмуляция это баланс между прямым исполнением и полной эмуляцией. Но для этого необходима X-память. Если её выделение невозможно, то одно только решение возможно - полная эмуляция. Можно установить аппаратные ловушки на системные шлюзы, но доставка исключений столь медленна, что приложение просто повиснет. Прямая порча кода - патчи врядле вам нужны, этот вариант следует забыть. Если вам нужно мониторить сервисы и варианты выше не подходят, то остаётся лишь один метод(без привилегий ядра) - использовать wmi логгер. Вот только я не видел реализаций, вам придётся самому это всё изучать, реверсить, а механизмы там не простые. Да и метод сомнительный и не обкатанный.
superakira, > Те если мы говорим про кейс с ловушками - то ты говоришь про програмную эмуляцию и отлов входа через отладчик встроенный - я правильно понял тебя? Я не понимаю вас. Ловушки это один из трёх типов событий(исключений), когда процессор прекращает выполнять инструкцию и вызывает спец код, который решает проблему. Про отладчик я ничего не говорил Точек останова лишь несколько, но вы забываете что их можно изменять по событиям останова. Если вы через это запустите обычный браузер то он зависнет. > Если есть доступ в ядро - то сбрасывается 1 бит. Если есть ядерный доступ, то и вопроса нет.
TermoSINteZ, Не знаю данный механизм, но любой подчиняется стандартной защите. Тоесть каким то образом событие будет передаваться между pl. А способ доставки событий определяет актуальность метода в данном случае. Даже если это и будет работать, то на новых площадках и тормозным способом. Обратная совместимость отсутствует.
superakira, > код еще не в валидном образе. Есть куча системной защиты, для которой ваш код - невалид. Тот же например dep/cfg/cfi/etc. Я же говорил, опишите подробно задачу.
superakira, Никак ваша задача кроме эмуляции не решается. Берите интел ксед, и его обёртку - пин и фиксите, собирайте. По профайлу это самый шустрый мотор(табличный декодер).