O CLR / .NET bytecode existem ferramentas? [fechadas]
Pergunta
Estou bem ciente de ferramentas Java para manipular, gerando, Decompiling JVM bytecode (ASM, cglib, jad, etc). Que ferramentas semelhantes existem para o bytecode CLR? As pessoas fazem manipulação de bytecode para o CLR?
Solução
Bytecode é um formato binário. conjuntos .NET funcionar muito diferente em termos de como eles armazenam as instruções de execução.
Em vez de compilar para baixo a um bytecode-como estrutura, linguagens .NET são compilados em uma linguagem intermediária (na verdade, ele é chamado apenas isso - IL)
.Esta é uma linguagem legível que a aparência levemente como uma versão orientada a objeto do assembler.
Assim, em termos de examinar ou manipular o IL para montagens individuais, ferramentas como o reflector e ILDASM permitem que você convenientemente ver a IL para qualquer montagem.
A manipulação é um pouco diferente, eu sugiro dar uma olhada em algumas das ferramentas AOP no espaço .NET. Eu também sugerem dando uma olhada em Phoenix, que é um projeto de compilador que MS tem nas obras. Ele tem algumas características de manipulação de pós-compilação muito legal.
Se você quiser saber mais sobre as ferramentas .NET AOP, eu sugiro abrir uma outra questão (que é toda uma outra lata de vermes).
Existem também vários livros que vai te ensinar os meandros do IL. Não é uma linguagem muito complicado para aprender.
Outras dicas
refletor é sempre bom, mas Mono.Cecil é a melhor ferramenta que você pode eventualmente pedir geral. É inestimável para manipular CIL de qualquer forma.
Mono.Cecil é uma grande ferramenta como ASM. É um subprojeto do Mono, e fonte totalmente aberto. Ele fornece até mesmo melhor recurso de System.Reflection.
NDepend permite fazer montagens .NET análise estática (métricas de código, análise de dependência, etc.). NDepend é muito útil para obter uma visão geral da estrutura de seus conjuntos .NET usando matriz de dependência, gráficos de dependência e treemap métricas visualizações .
Ele também é integrado com refletor: por exemplo, você pode detectar os tipos e métodos importantes em suas montagens utilizando, respectivamente, um Tipo / Método Posto métrica (um código de métrica semelhante ao Google Page Rank), e saltar directamente a partir NDepend para refletor para obter o código desmontado em C #, VB.NET, etc.