viewtopic.php?f=2&t=1248
viewtopic.php?f=2&t=1188
FAT FORMAT.kex
Спасибо, почитаем
ушёл...
А как вам такой вариант?:
1. Функция чтения/записи посекторно на НЖМД. В ядре.
2. Функция в ядре, разрешающая/запрещающая низкоуровневый доступ к диску. Если отключена, никто кроме Kernel'a не может писать на диск, только через ФС.
3. Программа для ручного включения/выключения защиты от low level. Можно будет вывести в трей ее значок.
4. Пункт 2 также при вызове проверяет хеш-код файла из которого был создан вызывающий поток . Если хэш не соответствует хэшу пункта 3, то низкоуровневый доступ к диску запрещается. Так как пункт 3 часто обновлять не придется, то его хэш будет в ядре. Т. е. никакая другая программа, кроме как п. 3 защиту не отключит без ведома пользователя. Минус один - код-зловред может переписать хэш в ядре под свой. Но этот минус потом можно будет убрать.
5. Ну ,собственно, конечная программа, желающая напрямую работать с диском, тот же форматёр, например. Ей придется попросить пользователя включить low-level доступ.
Как-то так, но это только набросок, первое, что пришло в голову...
1. Функция чтения/записи посекторно на НЖМД. В ядре.
2. Функция в ядре, разрешающая/запрещающая низкоуровневый доступ к диску. Если отключена, никто кроме Kernel'a не может писать на диск, только через ФС.
3. Программа для ручного включения/выключения защиты от low level. Можно будет вывести в трей ее значок.
4. Пункт 2 также при вызове проверяет хеш-код файла из которого был создан вызывающий поток . Если хэш не соответствует хэшу пункта 3, то низкоуровневый доступ к диску запрещается. Так как пункт 3 часто обновлять не придется, то его хэш будет в ядре. Т. е. никакая другая программа, кроме как п. 3 защиту не отключит без ведома пользователя. Минус один - код-зловред может переписать хэш в ядре под свой. Но этот минус потом можно будет убрать.
5. Ну ,собственно, конечная программа, желающая напрямую работать с диском, тот же форматёр, например. Ей придется попросить пользователя включить low-level доступ.
Как-то так, но это только набросок, первое, что пришло в голову...
ушёл...
У нас не многопользовательская среда. Какой смысл в заморочках с разрешением/запрещением, если в конце концов любая программа может получить доступ, не спрашивая об этом пользователя?
in code we trust
Читайте, пожалуйста, внимательно. Разрешить доступ к диску сможет только ОДНА специально предназначенная для этого программа, КОНТРОЛИРУЕМАЯ ПОЛЬЗОВАТЕЛЕМ, входящая в дистрибутив как системная, если какая-нибудь другая программа захочет доступа, она не сможет, так как хэш ее будет другим.mike.dld wrote:У нас не многопользовательская среда. Какой смысл в заморочках с разрешением/запрещением, если в конце концов любая программа может получить доступ, не спрашивая об этом пользователя?
ушёл...
А что помешает другой программе вызвать функцию, разрешающую чтение-запись на секторном уровне? Пока у ОС нет средств контроля прав доступа, она никак не сможет запретить программам вызывать любые функции.
Обновленный вариант:
1. Функция чтения/записи посекторно на НЖМД. В ядре. При вызове проверяет наличие доступа к секторам диска.
2. Функция в ядре, разрешающая/запрещающая низкоуровневый доступ к диску. Если отключена, никто кроме Kernel'a не может писать на диск, только через ФС.
3. Программа для ручного включения/выключения защиты от low level. Можно будет вывести в трей ее значок.
4. Пункт 2 также при вызове проверяет хеш-код файла из которого был создан вызывающий поток . Если хэш не соответствует хэшу пункта 3, то низкоуровневый доступ к диску запрещается. Так как пункт 3 часто обновлять не придется, то его хэш будет в ядре. Т. е. никакая другая программа, кроме как п. 3 защиту не отключит без ведома пользователя. Минус один - код-зловред может переписать хэш в ядре под свой. Но этот минус потом можно будет убрать.
5. Ну ,собственно, конечная программа, желающая напрямую работать с диском, тот же форматёр, например. Ей придется попросить пользователя включить low-level доступ.
1. Функция чтения/записи посекторно на НЖМД. В ядре. При вызове проверяет наличие доступа к секторам диска.
2. Функция в ядре, разрешающая/запрещающая низкоуровневый доступ к диску. Если отключена, никто кроме Kernel'a не может писать на диск, только через ФС.
3. Программа для ручного включения/выключения защиты от low level. Можно будет вывести в трей ее значок.
4. Пункт 2 также при вызове проверяет хеш-код файла из которого был создан вызывающий поток . Если хэш не соответствует хэшу пункта 3, то низкоуровневый доступ к диску запрещается. Так как пункт 3 часто обновлять не придется, то его хэш будет в ядре. Т. е. никакая другая программа, кроме как п. 3 защиту не отключит без ведома пользователя. Минус один - код-зловред может переписать хэш в ядре под свой. Но этот минус потом можно будет убрать.
5. Ну ,собственно, конечная программа, желающая напрямую работать с диском, тот же форматёр, например. Ей придется попросить пользователя включить low-level доступ.
ушёл...
Куча наворотов, прилично усложняющих ядро. Какой смысл их делать? Тогда уж лучше ввести нормальную систему контроля прав доступа. Работает программа от имени администратора -- пожалуйста, твори, что хочешь. Нет прав администратора -- иди куда подальше от потенциально опасных функций.
Ну все это можно сделать в виде *.inc. 2 функции усложнят?SII wrote:Куча наворотов, прилично усложняющих ядро. Какой смысл их делать?
А вот до этого КолибриОС очень далеко...SII wrote: Тогда уж лучше ввести нормальную систему контроля прав доступа. Работает программа от имени администратора -- пожалуйста, твори, что хочешь. Нет прав администратора -- иди куда подальше от потенциально опасных функций.
ушёл...
Как вариант, можно обойтись без хеша: при первой попытке низкоуровневой записи на диск через функцию 70.Х ядро выдаёт запрос на подверждение (пример: "программа X (путь /*d/*/*) пытается осуществить запись на диск /*d/*; Разрешить/ Запретить / Разрешить для всех /Запретить для всех. " И бо'льшая ответственность перекладывается на плечи мозговитого пользователя, а не программиста.
Спасибо, staper, я то же пришел к такому решению, просто думал, что тема исдохла, поэтому не стал писатьstaper wrote:Как вариант, можно обойтись без хеша: при первой попытке низкоуровневой записи на диск через функцию 70.Х ядро выдаёт запрос на подверждение (пример: "программа X (путь /*d/*/*) пытается осуществить запись на диск /*d/*; Разрешить/ Запретить / Разрешить для всех /Запретить для всех. " И бо'льшая ответственность перекладывается на плечи мозговитого пользователя, а не программиста.
ушёл...
Who is online
Users browsing this forum: No registered users and 2 guests