Я изучаю ИЛ.
Мне нравится инструмент .Net Reflector от RedGate (изначально Lutz). У меня уже есть книги Сержа Лидина и Ecma-335. Похоже, это все, что нам нужно для работы с IL (кроме ILAsm и ILDasm, конечно).
Моя задача — разобрать бинарный файл сборки и получить IL-код. Очевидно, что сборка представляет собой бинарный файл; следовательно, это просто цепочка байтов. Чтобы делать то, что я хочу, мне нужно знать структуру сборки: какие заголовки существуют, сколько байтов они занимают, смещения в байтах для чтения байт за байтом и т. д.
В книге Лидина это описано, но для меня это не на 100% понятно. Кто-нибудь пытался разобрать DLL как поток байтов? Иметь метаданные и код IL в виде потоков байтов, а затем анализировать поток байтов IL, чтобы получить источник IL? Я не хочу использовать отражение здесь; Я бы предпочел работать только с бинарным файлом.
Моно Сесил делает то же самое? Даже если так, я хотел бы знать, как это сделать.
И да, я пытаюсь создать еще одно колесо, подобное .NET Reflector, и я хочу знать, как оно сделано. Как кто-то сказал: «Лутц не обязательно должен быть единственным человеком в мире, который умеет это делать».
Кстати, как работает ISDasm? Это было закодировано в .net?
Любые мысли, ресурсы, примеры?
Спасибо.