Pergunta

Estou estudando IL.

Gosto da ferramenta .NET Reflector da Redgate (Lutz inicialmente). Eu já tenho livros de Serge Lidin e ECMA-335. Parece que essas coisas são tudo o que temos que trabalhar com IL (exceto ilasma e ildasm, é claro).

Minha tarefa é analisar o arquivo binário de montagem e obter o código IL. É óbvio que a assembléia é um arquivo binário; Portanto, é apenas uma cadeia de bytes. Para fazer o que eu quero, preciso conhecer a estrutura da montagem: quais cabeçalhos existem, quanto bytes eles ocupam, compensações em bytes para lê -lo byte após byte, etc.

O livro de Lidin descreve, mas não é 100% claro para mim. Alguém tentou analisar a DLL como fluxo de bytes? Para ter metadados e código de IL como fluxos de bytes, analise o fluxo de IL BYTE para obter a fonte do IL? Não quero usar a reflexão aqui; Eu gostaria de trabalhar apenas com o arquivo binário.

O mono cecil faz o mesmo? Mesmo se sim, eu gostaria de saber como fazer isso.

E sim, estou tentando criar outra roda como a do .NET Reflector e quero saber como é feita. Como alguém disse: "Lutz não deveria necessariamente ser o único homem do mundo que sabe como fazê -lo".

BTW, como o ISDASM funciona? Foi codificado no .NET?

Algum pensamento, recursos, exemplos?

Obrigada.

Foi útil?

Solução

Mono.Cecil does exactly what you want to do. So, you may want to have a look at the source code.

In fact, there is an on going project named Cecil.Decompiler, from Jb Evain, based on top of Cecil, which is an open source .NET decompiler.

Outras dicas

You could use ildasm directly:

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

It can be automated from within your program.

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