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