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?

Foi útil?

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.

ILDASM e refletor vêm à mente.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top