Формат файла .NET – внутреннее устройство сигнатур (часть 1)

ОГЛАВЛЕНИЕ

Полное описание сигнатур, входящих в состав формата файла .NET.

Загрузить бинарные DLLпримеров программ - signatures_binary.zip - 16.40 Кб

Загрузить исходники примеров программ - signatures_source.zip - 5.69 Кб

Оглавление

  • 1. Введение
  • 2. Чтотакоесигнатуры?
  • 3. Начало работы
    • 3.1 Проводник CFF
    • 3.2 Порядок следования байтов
    • 3.3 Сжатое целое
    • 3.4 Константы
  • 4. Сигнатуры
    • 4.1 FieldSig
    • 4.2 PropertySig
    • 4.3 MethodDefSig
    • 4.4 MethodRefSig
    • 4.5 StandAloneMethodSig

Введение

1. Введение

Данная статья, состоящая из двух частей, охватывает сигнатуры, являющиеся второй важнейшей частью файла .NET после метаданных, о которых Дэниел Пистелли написал прекрасную статью, расположенную здесь. Настоятельно рекомендую прочитать эту статью перед тем, как двигаться вперед, кроме того, вы можете прочитать Подробное рассмотрение формата портативного исполняемого файла Win32 в журнале MSDN, описывающее формат файлов PE, образующий основу для метаданных .NET, сигнатур и кода промежуточного языка (IL). Безусловно, почти все можно найти в спецификации метаданных разбиения II, но, как водится, спецификации жертвуют читабельностью ради полноты, что стало другой причиной написания данной статьи.

2. Что такое сигнатуры?

Сигнатуры хранят данные, которые нельзя компактно сохранить в таблицах метаданных, например, типы параметров, аргументы, подаваемые в настраиваемые атрибуты, дескрипторы упорядочения(сортировки, формирования), и т.д. Хранение такой информации, как типы данных, в таблицах, может привести к чрезмерной фрагментации данных, неразборчивости и снизить производительность, поэтому специалисты CLI/CLR придумали сигнатуры, позволяющие хранить ранее упомянутый тип данных в компактной и хорошей форме, в следующих разделах вы ясно увидите, почему они так важны.