Здравствуйте, 5er, Вы писали:
CEM>>Можно как-то чем-то ограничить объём читаемой-записываемой процессом информации на диск?
5er>Например, хук на ZwReadFile/ZwWriteFile, в котором реализовать требуемые правила ограничения.
Это всмысле, перехват вызова? ZwReadFile/ZwWriteFile — это низкоуровневые недокументированные функции?
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, 5er, Вы писали:
CEM>>>Можно как-то чем-то ограничить объём читаемой-записываемой процессом информации на диск?
5er>>Например, хук на ZwReadFile/ZwWriteFile, в котором реализовать требуемые правила ограничения.
CEM>Это всмысле, перехват вызова? ZwReadFile/ZwWriteFile — это низкоуровневые недокументированные функции?
Да, перехват вызова.
Функции, на самом деле, давно уже документированы.
Здравствуйте, 5er, Вы писали:
CEM>>>>Можно как-то чем-то ограничить объём читаемой-записываемой процессом информации на диск?
5er>>>Например, хук на ZwReadFile/ZwWriteFile, в котором реализовать требуемые правила ограничения.
CEM>>Это всмысле, перехват вызова? ZwReadFile/ZwWriteFile — это низкоуровневые недокументированные функции?
5er>Да, перехват вызова.
А есть хотя бы схематический примерчик с ключевыми функциями?
5er>Функции, на самом деле, давно уже документированы.
Здравствуйте, CEMb, Вы писали:
CEM>Добрый день!
CEM>Можно как-то чем-то ограничить объём читаемой-записываемой процессом информации на диск?
Что значит "информация, записываемая процессом на диск" ?
С файлами все понятно. Хотя не очень — временные файлы учитывать ? А файловый кэш ?
А если приложение выделяет память, которая удовлетворяется из файла подкачки ?
С чтением вообще темный лес. В смысле — критерии "чтения" очень размыты.
ZwReadFile/ZwWriteFile, кстати, работают [далеко] не только с файлами.
Короче, надо ждать пока в тему заглянет x64 и даст какой-нибудь толковый совет.
Здравствуйте, CEMb, Вы писали:
5er>>Да, перехват вызова.
CEM>А есть хотя бы схематический примерчик с ключевыми функциями?
В инете есть примеры. Как-то хитро они ищутся, но есть ибо малварно-хакерская техника, особенно под винду старше чем XP.
На форуме, например, есть статья
Вообще, м.б. стоит пересмотреть бизнес логику приложения. Если нужен мониторинг работы с диском, то писать/читать на диск нужно
через свой компонент, в котором реализован соответствующий манеджер.
Перехват api-вызовов хорош для тестирования, когда нужно зафейлить системный вызов в готовом приложении и посмотреть реакцию.
Или залоггировать те же вызовы.
Так что если не пишите свой FileMon, то в такие дебри лезть не стоит ради сомнительного функционала.
O>ZwReadFile/ZwWriteFile, кстати, работают [далеко] не только с файлами. O>Короче, надо ждать пока в тему заглянет x64 и даст какой-нибудь толковый совет.
я даже знаю какой это будет совет
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
O>>ZwReadFile/ZwWriteFile, кстати, работают [далеко] не только с файлами. O>>Короче, надо ждать пока в тему заглянет x64 и даст какой-нибудь толковый совет. O>я даже знаю какой это будет совет
Я тоже, у меня его аська есть, уже как-то чё-то спрашивал
Я думаю, он посоветует написать драйвер, но что-то мне неохота писать драйвер, потому что под 7-ку его подписывать надо, а во-вторых, я не умею писать драйвера. Апишные перехваты я хоть делал немного
Здравствуйте, CEMb, Вы писали:
CEM>Добрый день!
CEM>Можно как-то чем-то ограничить объём читаемой-записываемой процессом информации на диск?
Я что-то постановку задачи не пойму. Ограничимся простым примером — идет WriteFile в один файл.
Что ты хочешь — чтобы один вызов прошел, а второй дал отказ ? И что потом ?
ИМХО ограничивать надо просто задержками между записью в своей программе.
Здравствуйте, 5er, Вы писали:
CEM>>А есть хотя бы схематический примерчик с ключевыми функциями?
5er>В инете есть примеры. Как-то хитро они ищутся, но есть ибо малварно-хакерская техника, особенно под винду старше чем XP. 5er>На форуме, например, есть статья
. 5er>Для ознакомления с принципом работы сойдет.
Ага, читал, делал перехват через таблицу импорта.
Интересен был инжект в чужой процесс через LoadLibrary с последующим перехватом.
5er>Вообще, м.б. стоит пересмотреть бизнес логику приложения. Если нужен мониторинг работы с диском, то писать/читать на диск нужно 5er>через свой компонент, в котором реализован соответствующий манеджер.
Ага, я тоже так считаю Но фирма-автор сего "шедевра" настолько большая и опупенная, что меня просто нафиг пошлют с такими идеями
Не_пользоваться их софтом я не могу по ряду причин, в подробности вдаваться не буду
5er>Перехват api-вызовов хорош для тестирования, когда нужно зафейлить системный вызов в готовом приложении и посмотреть реакцию.
О, интересная идея. А насколько это актуально бывает? Ну и фэйл фэйлу — рознь. Да и зафэйлить можно без перехвата — стек сломать/забить
5er>Или залоггировать те же вызовы.
5er>Так что если не пишите свой FileMon, то в такие дебри лезть не стоит ради сомнительного функционала.
Между делом: API-Mon хочу написать, но это уже другая песня
Мне вот интересно — неужели для решения данной задачи нельзя обойтись встроенными
средствами безопасности Windows, дисковыми квотами NTFS, наконец ?..
Или хотя бы как-то извратиться, запуская программу из-под специально настроенной
учетной записи с такими квотами ?
Что, без тяжелой артиллерии вроде файловых драйверов никуда ?
Здравствуйте, x64, Вы писали:
O>>Короче, надо ждать пока в тему заглянет x64 и даст какой-нибудь толковый совет.
x64>
x64>Я здесь и готов помочь обездоленным!
Здравствуйте, okman, Вы писали:
O>Мне вот интересно — неужели для решения данной задачи нельзя обойтись встроенными O>средствами безопасности Windows, дисковыми квотами NTFS, наконец ?..
Это где настраивается? Если возможно, то, конечно, лучше такое решение.
O>Или хотя бы как-то извратиться, запуская программу из-под специально настроенной O>учетной записи с такими квотами ?
Вот тут не получится... программа запускается службой, и нет доступа (и не будет).
O>Что, без тяжелой артиллерии вроде файловых драйверов никуда ?
Драйвера тоже не пойдут, потому что на 7-ке подпись нужна.
Здравствуйте, Pavel Dvorkin, Вы писали:
CEM>>Можно как-то чем-то ограничить объём читаемой-записываемой процессом информации на диск?
PD>Я что-то постановку задачи не пойму. Ограничимся простым примером — идет WriteFile в один файл. PD>Что ты хочешь — чтобы один вызов прошел, а второй дал отказ ? И что потом ?
Хочу делать паузы между обращениями к диску на чтение/запись.
PD>ИМХО ограничивать надо просто задержками между записью в своей программе.
Да не моя это программа. Есть программа, которая своим мамонтячьим обращением к диску вешает напрочь всю систему. Убить её нельзя, остановить тоже, хочется её притормозить именно на тему I/O
Здравствуйте, x64, Вы писали:
CEM>>Можно как-то чем-то ограничить объём читаемой-записываемой процессом информации на диск?
x64>Тебе надо именно квоту или регулирование пропускной способности?
Вобщем, есть программа, которая читает пишет гигабайтами с места на место. Можно как-то сделать так, чтобы между обращениями к диску делать паузы? Я сейчас ProcMon открыл, посмотрел, там все программы пишут/читают по смещению и порциями. Вот если бы можно было бы для the программы после каждой записи делать Sleep(20) — было бы чудно (наверно/надеюсь)