Какие существуют инструменты байт-кода CLR/.NET?[закрыто]

StackOverflow https://stackoverflow.com/questions/123690

  •  02-07-2019
  •  | 
  •  

Вопрос

Я хорошо знаком с инструментами Java для манипулирования, генерации и декомпиляции байт-кода JVM (ASM, cglib, jad и т. д.).Какие подобные инструменты существуют для байт-кода CLR?Делают ли люди манипуляции с байт-кодом для CLR?

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

Решение

Байткод — это двоичный формат.Сборки .NET работают по-разному с точки зрения хранения инструкций выполнения.

Вместо компиляции в структуру, подобную байт-коду, языки .NET компилируются в промежуточный язык (на самом деле он так и называется — IL).

Это читаемый человеком язык, который выглядит как объектно-ориентированная версия ассемблера.

Таким образом, с точки зрения проверки или управления IL для отдельных сборок такие инструменты, как Reflector и ILDASM, позволяют удобно просматривать IL для любой сборки.

Манипуляции — это немного другое, я бы предложил взглянуть на некоторые инструменты АОП в пространстве .NET.Я бы также посоветовал взглянуть на Phoenix, проект компилятора, над которым MS работает.У него есть несколько действительно интересных функций манипуляции после компиляции.

Если вы хотите узнать больше об инструментах .NET AOP, я бы предложил задать еще один вопрос (это совсем другая банка с червями).

Есть также несколько книг, которые научат вас всем тонкостям IL.Это не очень сложный язык для изучения.

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

Reflector — это всегда хорошо, но Mono.Cecil — лучший инструмент, который вы можете себе представить.Это бесценно для любого манипулирования CIL.

Моно.Сесил это отличный инструмент, такой как ASM.Это подпроект Mono с полностью открытым исходным кодом.Это даже обеспечивает лучшая функция чем System.Reflection.

ИЛДАСМ и Отражатель приходит на ум.

NDepend позволяет выполнять статический анализ сборок .NET (метрики кода, анализ зависимостей и т. д.).NDepend очень полезен для получения обзора структуры ваших сборок .NET с использованием матрицы зависимостей, графиков зависимостей и показателей древовидной карты. визуализации.

Он также интегрирован с Reflector:например, вы можете обнаружить важные типы и методы в ваших сборках, используя соответственно тип/метод. Показатель ранга (метрика кода, аналогичная Google Page Rank) и сразу перейти от NDepend к Reflector, чтобы получить дизассемблированный код на C#, VB.NET и т. д.

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