Вопрос

Я изучаю IL.

Мне нравится инструмент .NET Ofterctor от Redgate (изначально Lutz). У меня уже есть книги Сержа Лидина и ECMA-335. Похоже, что это все, что нам нужно работать с IL (кроме илазмы и Ильдзма, конечно).

Моя задача - проанализировать двоичный файл сборки и получить код IL. Очевидно, что сборка является двоичным файлом; Следовательно, это всего лишь цепь байтов. Чтобы сделать то, что я хочу, мне нужно знать структуру сборки: какие заголовки существуют, сколько байтов они занимают, смещаются в байтах, чтобы прочитать его байт после байта и т. Д.

Книга Лидина описывает это, но для меня это не на 100%. Кто -нибудь пытался проанализировать DLL как байтовый поток? Иметь код метаданных и IL в качестве байтовых потоков, а затем анализируйте поток байта IL, чтобы получить источник IL? Я не хочу использовать отражение здесь; Я бы хотел работать только с бинарным файлом, скорее.

Моно Сесил делает то же самое? Даже если это так, я бы хотел знать, как это сделать.

И да, я пытаюсь создать другое колесо, подобное тому, что в .net отражатель, и я хочу знать, как оно сделано. Как кто -то сказал: «Лутц не обязательно должен быть единственным человеком в мире, который знает, как это сделать».

Кстати, как работает ISDASM? Было ли это закодировано в .net?

Есть мысли, ресурсы, примеры?

Спасибо.

Это было полезно?

Решение

Mono.cecil делает именно то, что вы хотите сделать. Итак, вы можете посмотреть на исходный код.

На самом деле, есть проект по продвижению под названием Cecil.Decompiler, из JB Evain, на основе вершины Сесила, который является декомпилятором с открытым исходным кодом .NET.

Другие советы

Вы могли бы использовать ildasm напрямую:

ildasm.exe MyFile.dll /output:MyFile.il

Это может быть автоматизировано из вашей программы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top