Уважаемые гуру! Подскажите в какую сторону копать. Условие задачки: необходим как можно более документированный и надежный механизм невидимости файлового раздела для конкретных процессов и служб. Указанные пользователем процессы должны раздел видеть и работать с ним прозрачно. Способ нужен вполне легальный. Применение в руткитах не предусматривается.
Ну а все остальное совершенно нелегально, и будет искореняться мелкософтом в windows vista. Так что будь готов, что твоя программа однажды перестанет работать, либо (если ты разрабатываешь коммерческое ПО) на тебя подадут в суд за использование руткит технологий. Ну а методов скрыть файл есть довольно много. Это хуки юзермодных апи, хуки SDT, прерываний, MSR, хуки IOCTL драйвера ФС. Выбирай по вкусу.
MageSlayer Смотря что считать легальным. Технологии, используемые фаерволами и антивирусами можно сюда отнести? А если я теперь скажу, что они взаимстовали эти технологии у троянов? А кто-то скажет что наоборот - трояны у антивирусов. И как быть? Что легально, а что нет? Запрещает ли УК РФ хукать функции через SDT? Наверное нет. Но твою программу могут счесть вредоносной (опять таки вопрос не самый однозначный - какие программы можно считать вредоносными). Однако в таком случае вредоносными также следует считать и все современные аверы и фаеры. Мое имхо: забудте про легальность и модифицируйте SDT. Благо статей и книжек (пока что) хватает.
УК РФ не запрещает, а вот MS в новых версиях виндов запрещает. Если обойти эту защиту, то могут возникнуть проблемы как технические (в следующих заплатках может вылетать в бсод), так и судебные. Ну а вот на StarForce в суд подали, за то что они ядро патчат. Еще сказали, что StarForce может выводить из строя cd приводы. Это конечно же бред, но однако факт. Так что если программа легальная, то советую юзать только атрибут "скрытый" Да. Наличие PatchGuard в новых виндах, общая политика мелкософт насчет обязательного подписывания драйверов в vista, и скандал с Sony DRM очень этому способствуют. Любой антивирус/фаерволл не принадлежащий Microsoft будет вынужден использовать незаконные хаки, и может быть преслудем судебно за это в будующем. Исключение составляют разве что фаевроллы на легальных методах, например на Packet filtering API. Хотя это фаерволлом назвать тогда можно будет лишь с большой натяжкой. Microsoft вообще планирует защитать ядро Vista от патчей (также, как сейчас XP64). При появлении новых методик обхода защиты, их просто будут прикрывать в новых заплатках. Официально, они это позиционируют как защиту от руткитов, ну а на самом деле имхо сделано это для того, чтобы выйти на рынок антивирусных продуктов (и задавить всех конкурентов), ну а руткиты можно успешно делать и не патча ядро
тогда забудь про x64 )) Ms Rem стока букаф потратил на то, чтоб донести эту мысль Кстати, а чем Вас не устраивают файловые минифильтры? С их помощью задача решается корректно. Другое дело, что обычно песочница кроме файловых операций контролирует еще ряд операций, как то: операции с реестром операции с объектами ядра операции с памятью загрузка исполняемых модулей операции с графической системой Если это все делать в полном объеме, таки потребуется видимо патч SDT поскольку пока широкой общественности не известно какое либо API для реализации перечисленной функциональности. С другой стороны, для каждой задачи можно найти более менее приемлемый путь. Ну блин, так все это вместе криво получается (((, кроме того начинаютя платформенный зависимости. Короче, с контролем SDT MS конечно подложил свинью . Нет чтоб сделать какойнибудь экспорт в ядре, типа KeSetSDTCallback, все равно ж под х64 требуется цифровой сертефикат для работы. Все были бы довольны. А они сцуки..... Кстати, что народ думает, есть какое нибудь API ( вроде KeSetSDTCallback ) или SDT защищена концептуально? Если API таки есть, MS вообще ведет себя незаконно.
Еще забудь про vista. Никаких подобных API нет. Но, в структуре каждого потока есть указатель на используюмую им service table, и именно через этот указатель будут идти вызовы этого потока (см. KiSystemService). Казалось бы, замени указатель на свой, и получишь хуки SDT сервисов без патча ядра, но на практике все оказывается не так. Проблема состоит в том, что в ядре есть функция PsConvertToGuiThread, которая при первом вызове сервиса win32k.sys, меняет указатель на st в структуре потока с KeServiceDescriptorTable на KeServiceDescriptorTableShadow, при этом используется прямое сравнение указателя с KeServiceDescriptorTable. И это не единственное место, в котором имеется жесткая привязка к KeServiceDescriptorTable (есть еще одно место в ядре, точно уже не помню, где есть подобное сравнение). Поэтому, поток у которого поменяли указатель на st, не может корректно работать без патча этих сравнений в ядре.
to TarasCo Файловые минифильтры? Хм, реализация будет значительно попроще. Спасибо за наводку. А еще вопросик можно? - А каким образом определить от имени какого процесса идет запрос через этот механизм фильтров?
Самый легальный способ нечто подобное реализовать - сделать свою версию эмулятора wine для никсов, с заявленной функциональностью (при том что процессы будут не все поддерживаться). Только надо предполагать, что юзеры этим пользоваться не захотят и не будут.