Глобально задача такая - мне нужно процессу выделять кусок памяти и полностью мониторить его работу (там проверять на вирусные сигнатуры, проверять какие АПИ он хочет использовать и тд). Что-то вроде песочницы (sandbox). Важная особенность - именно зажать процесс в нутри выделенного ему блока, в котором я должен ( или хотя бы попытаюсь) эмулировать все нужные ему компоненты винды, к которым он захочет обратиться. Вопросы как раз про это. Можете помочь советом или литературой? (я читал тока Свен Шрайбер "Недокументированные возможности вин2000", щас читаю Марк Руссинович "Внутреннее устройство вин2000")
Ну что ж вы сразу отбиваете интерес у человека)) Автор я бы вам рекомендовал попробовать сделать какое-то подобие этого в юзер моде. Например работу с файлами похукайте, потом добавьте реестр, и т.д. по нарастающей. Потом переносите в кернел мод.
rpy3uH Ну почему все, принцип работы будет такой же, хук-подсовывание того что нужно-возварт управления. Понятно что просто поставить subsystem:native не получится, зато человек уже будет иметь представление какое-то.
Мб поступлю так , как вы советуете Я же просто решил сделать подобное, а не к выходным. Я делал хуки для юзер-мода, а вот с реестром никогда не работал. А какая дальше наростающая ? Кстати способ перехвата, который описал Свен Шрайбер, хороший или чистой учебный материал?
Как вариант идею Copy On Write 0) запомнили пид запущенного процесса 1) ставится хук допустим на функцию работы с реестром (на чтение и на запись для начала) 2) если наш процесс и идет чтение то отдать ему данные 3) если наш процесс и идет запись, то записать их в другое место и поставить пометку что данные изменены 4) если процесс опять пытается считать данные то проверить есть ли у нас копия их или нет. если есть то отдать копию если нет, то продолжить чтение Если дело довести до файловой системы, то можно попробовать спуститься еще ниже и там уже делать фильтр файловой системы. И для конкретного процесса делать такой алгоритм: 0) любое обращение к файлам проверять сначала на наличие копии файла в спец папке. 1) любой файл к которому идет обращение с правами на запись, предварительно делать его копию в спец папку 2) если файл удаляется, то ставится пометка что файл удален и дальнейшая работа для процесса с этим файлом будет показывать что он не существует. Больше трудностей будет с отслеживанием всех факторов. т.е. идея в том, что любое изменение любого файла делается в его копии. Конечно система далеко не идеальна получится, зато действенная. Если с файловой системой всё просто то с реестром чуть тяжелее будет. Хотя если покопаться, то можно сделать и всю копию реестра (для нужного процесса) К тому же надо предотвращать работу очень важных функций, типа загрузка драйвера - инжект в чужой процесс (иначе придется делать тотальное слежение не по пиду, а по ID потоков)