EreTIk's Box » Cтатьи, исходники » Маски доступа для NtQueryInformationFile, NtSetInformationFile, NtQueryVolumeInformationFile и NtSetVolumeInformationFile


Таблица переехала

https://githomelab.ru/EreTIk/ioam



Необходимые маски доступа на объект файла при вызове NtQueryInformationFile, NtSetInformationFile, NtQueryVolumeInformationFile и NtSetVolumeInformationFile определяются в зависимости от класса информации, который указан при вызове этих функций. Поэтому я сгенерировал для себя (может кому-нибудь тоже будет полезно) таблицы соответствий класса информации и требуемых масок доступа. Для сборки был написан простенький скрипт ioam.py, который использует pykd.


Updated (01.10.2018)

Скрипт снова переработан и вместе с файлами-источниками информации (коллекцией ntoskrnl.exe) выложен на GitLab. Фактически этот мини-проект (вместе со сгенерирвоанной таблицей) переместился, новый адрес: https://githomelab.ru/EreTIk/ioam.

Ключевые изменения:

  • Сразу генериуется GitLab Flavored Markdown (раньше формировалась заготовка HTML-файла)
  • Таблицы "разрезаны" по 16 строк (для увеличения удобства просмотра и скроллинга)
  • В набор исходных файлов добавлены ядра с номерами сборок 17134 (версия 1803) и 17763 (версия 1809)

Updated (01.11.2017)


Скрипт был сильно переработан. Первым изменением стало то, что он стал обрабатывать не один файл ядра, а директорию с некоторой коллекцией файлов. Соответственно, таблица выросла, и в ней отражаются изменения для разных версий ОС. Сама коллекция была выбрана не из всех доступных мне ядер, а только релизы и только те, что отличаются между собой. Например оказалось, что service pack'и Windows XP, Vist и 7 не отличаются между собой, поэтому в готовую таблицу попали ядра без service pack'ов.

Вторым изменением стало то, что наряду с массивом масок доступа скрипт стал обрабатывать и массив минимального размера буфера. Это позволило убрать из таблицы неподдерживаемые значения классов (для которых функция возвращает STATUS_INVALID_INFO_CLASS). Иконка X в таблице означает, что запрос перестал поддерживаться.


Результат работы скрипта:


ΞρεΤΙκ