Возьня с DEP

Тема в разделе "WASM.WIN32", создана пользователем superakira, 7 фев 2018.

  1. superakira

    superakira Guest

    Публикаций:
    0
    Хотел уточнить как лучше быть.
    Исходные - есть процесс с аппаратным депом, который до кучи ставит флажок перманент на странички.
    Ставит деп в рантайме (хотя так то не важно).
    Хотел бы узнать по NtSetInformationProcess еще актуально? Пока ревершу и перепроверяю ядро от 10, но малоли в курсе.
    Короче как бы мне сбросить деп, но без шума гама (да я могу залезть на стартре отловить что надо и не дать установить, но так не хотелось бы).

    Да.. есть еще момент и его пока разбираю. Кейс в том, что дергается NtSetInformationProcess через h-gates из-под wow для нативного 64 битного. Ну это если это еще рабочи вариант в принципе конечно.

    И плиз. Давайте не как обычно обсуждать =) Ну вы понели))

    Так как 10 апается со скорость электровеника, то хз, что тут актуально, поэтому спросил.

    Заранее спасибо.
     
    Последнее редактирование модератором: 7 фев 2018
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    superakira,

    Эти механизмы либо наследуются, те отключить если запущены нельзя, либо для этого нужны соответствующие права. Это всё защита от OP, иначе просто получите соответствующие события и обработайте их(так как ваш код уже начал выполняться, то такая защита не имеет смысла). ProcessDynamicCodePolicy может вызвать проблемы, так как часто нужна исполняемая память. Но опять же, если ваш код получил управление, то выделять исполняемые буфера не особо нужно, например код можно выполнить через его эмуляцию, что не требует исполняемой памяти.
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    superakira,

    Исполняемая память нужна для быстрого исполнения - прямого или динамической эмуляции, во втором случае поток инструкций копируется в буфер и там исполняется, для получения управления после исполнения блока дописывается ветвление. Обычная эмуляция это когда инструкция разлаживается на примитивы, имитируется её работа. Так работают ав эмуляторы, некоторые виртуальные машины или dbi инструменты, типо пина. Тогда не нужна исполняемая память, так как инструкция только читается(r-df), но есть недостатки у такой эмуляции - значительная просадка профайла(тормозит), очень большой размер эмулятора и как следствие его не стабильность.
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    superakira,

    Это единственный способ что то выполнить, если аллокация X-памяти заблокирована.

    Опишите задачу более подробно.
     
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    superakira,

    Динамическая эмуляция это баланс между прямым исполнением и полной эмуляцией. Но для этого необходима X-память. Если её выделение невозможно, то одно только решение возможно - полная эмуляция. Можно установить аппаратные ловушки на системные шлюзы, но доставка исключений столь медленна, что приложение просто повиснет. Прямая порча кода - патчи врядле вам нужны, этот вариант следует забыть.

    Если вам нужно мониторить сервисы и варианты выше не подходят, то остаётся лишь один метод(без привилегий ядра) - использовать wmi логгер. Вот только я не видел реализаций, вам придётся самому это всё изучать, реверсить, а механизмы там не простые. Да и метод сомнительный и не обкатанный.
     
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Можно еще заюзать Intel IPT (вместо WMI) то такие да - реализация не тривиальна.
     
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    superakira,

    > Те если мы говорим про кейс с ловушками - то ты говоришь про програмную эмуляцию и отлов входа через отладчик встроенный - я правильно понял тебя?

    Я не понимаю вас. Ловушки это один из трёх типов событий(исключений), когда процессор прекращает выполнять инструкцию и вызывает спец код, который решает проблему. Про отладчик я ничего не говорил :)

    Точек останова лишь несколько, но вы забываете что их можно изменять по событиям останова. Если вы через это запустите обычный браузер то он зависнет.

    > Если есть доступ в ядро - то сбрасывается 1 бит.

    Если есть ядерный доступ, то и вопроса нет.
     
  8. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    TermoSINteZ,

    Не знаю данный механизм, но любой подчиняется стандартной защите. Тоесть каким то образом событие будет передаваться между pl. А способ доставки событий определяет актуальность метода в данном случае. Даже если это и будет работать, то на новых площадках и тормозным способом. Обратная совместимость отсутствует.
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    superakira,

    > код еще не в валидном образе.

    Есть куча системной защиты, для которой ваш код - невалид. Тот же например dep/cfg/cfi/etc. Я же говорил, опишите подробно задачу.
     
  10. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    superakira,

    Никак ваша задача кроме эмуляции не решается. Берите интел ксед, и его обёртку - пин и фиксите, собирайте. По профайлу это самый шустрый мотор(табличный декодер).