Песочница

Тема в разделе "WASM.NT.KERNEL", создана пользователем kamax70, 16 май 2011.

  1. kamax70

    kamax70 New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    36
    Глобально задача такая - мне нужно процессу выделять кусок памяти и полностью мониторить его работу (там проверять на вирусные сигнатуры, проверять какие АПИ он хочет использовать и тд).

    Что-то вроде песочницы (sandbox).

    Важная особенность - именно зажать процесс в нутри выделенного ему блока, в котором я должен ( или хотя бы попытаюсь) эмулировать все нужные ему компоненты винды, к которым он захочет обратиться.

    Вопросы как раз про это. Можете помочь советом или литературой?
    (я читал тока Свен Шрайбер "Недокументированные возможности вин2000", щас читаю Марк Руссинович "Внутреннее устройство вин2000")
     
  2. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Похучте для начала всю SDT и шадов. Этот гемор явно требует знаний бо'льших чем у вас.
     
  3. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Ну что ж вы сразу отбиваете интерес у человека))
    Автор я бы вам рекомендовал попробовать сделать какое-то подобие этого в юзер моде. Например работу с файлами похукайте, потом добавьте реестр, и т.д. по нарастающей. Потом переносите в кернел мод.
     
  4. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    какой-же это будет перенос? надо будет абсолютно все перелопачивать, проще будет прогить заново....
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
  6. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    rpy3uH
    Ну почему все, принцип работы будет такой же, хук-подсовывание того что нужно-возварт управления. Понятно что просто поставить subsystem:native не получится, зато человек уже будет иметь представление какое-то.
     
  7. kamax70

    kamax70 New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    36
    Мб поступлю так , как вы советуете :) Я же просто решил сделать подобное, а не к выходным.
    Я делал хуки для юзер-мода, а вот с реестром никогда не работал. А какая дальше наростающая ?
    Кстати способ перехвата, который описал Свен Шрайбер, хороший или чистой учебный материал?
     
  8. slesh

    slesh New Member

    Публикаций:
    0
    Регистрация:
    6 фев 2009
    Сообщения:
    214
    Как вариант идею Copy On Write
    0) запомнили пид запущенного процесса
    1) ставится хук допустим на функцию работы с реестром (на чтение и на запись для начала)
    2) если наш процесс и идет чтение то отдать ему данные
    3) если наш процесс и идет запись, то записать их в другое место и поставить пометку что данные изменены
    4) если процесс опять пытается считать данные то проверить есть ли у нас копия их или нет. если есть то отдать копию если нет, то продолжить чтение

    Если дело довести до файловой системы, то можно попробовать спуститься еще ниже и там уже делать фильтр файловой системы. И для конкретного процесса делать такой алгоритм:
    0) любое обращение к файлам проверять сначала на наличие копии файла в спец папке.
    1) любой файл к которому идет обращение с правами на запись, предварительно делать его копию в спец папку
    2) если файл удаляется, то ставится пометка что файл удален и дальнейшая работа для процесса с этим файлом будет показывать что он не существует. Больше трудностей будет с отслеживанием всех факторов.
    т.е. идея в том, что любое изменение любого файла делается в его копии.

    Конечно система далеко не идеальна получится, зато действенная.
    Если с файловой системой всё просто то с реестром чуть тяжелее будет. Хотя если покопаться, то можно сделать и всю копию реестра (для нужного процесса)

    К тому же надо предотвращать работу очень важных функций, типа загрузка драйвера - инжект в чужой процесс (иначе придется делать тотальное слежение не по пиду, а по ID потоков)