Можете ли вы напрямую изменить косвенные блоки индексного дескриптора в пользовательском пространстве?

Есть ли способ в пользовательском пространстве напрямую изменить указатели косвенных блоков в индексном узле?

Я читал этот документ http://www.cis.syr.edu/~wedu/seed/Documentation/Minix3/Inode.pdf, но то, что я узнал из него, как следует из его названия, манипулирует инодами, а не явно изменяет блоки внутри инода.

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


person Christian Grabowski    schedule 18.10.2016    source источник


Ответы (1)


Некоторые файловые системы (ext*fs, не уверен насчет minix) оптимизируют и записывают данные (‹60 байт) в массив указателей блоков индексного дескриптора.

В этом случае вы можете просто изменить последние 12 байтов, которые соответствуют косвенным указателям блоков.

Вы не можете получить доступ к массиву указателей блоков в пользовательском пространстве; однако вы можете сделать хак, просто создав файл размером 60 байт, а затем попытаться прочитать его содержимое.

person Hrishikesh Goyal    schedule 18.10.2016
comment
Это довольно интересно. Не могли бы вы уточнить, как получить доступ к массиву указателей блоков индексного дескриптора? - person Christian Grabowski; 18.10.2016
comment
вы имеете в виду в пользовательском пространстве? - person Hrishikesh Goyal; 18.10.2016
comment
Да, в пространстве пользователя. - person Christian Grabowski; 18.10.2016
comment
Нет, вы не можете получить доступ к адресам блоков, написанным там. Единственное, что вы можете взломать, это просто создать файл размером 60 байт, а затем попытаться прочитать его содержимое. - person Hrishikesh Goyal; 18.10.2016
comment
Не могли бы вы добавить это к фактическому ответу? - person Christian Grabowski; 18.10.2016
comment
Нет, этот трюк не сработает. Все нормальные операционные системы обнулят содержимое неинициализированных файлов. - person ; 19.10.2016
comment
@duskwuff, можешь уточнить? - person Christian Grabowski; 19.10.2016
comment
Если вы просто создадите файл размером 60 байт, файл будет пустым. Тот факт, что он может быть сохранен в индексном узле, не означает, что вы можете увидеть другое содержимое индексного дескриптора в файле. - person ; 19.10.2016
comment
Хм, заботишься о том, чтобы сделать это ответом? - person Christian Grabowski; 19.10.2016