Pergunta

Esta é uma questão de duas partes. Mas ambos se relacionam com a mesma coisa.

Quero trabalhar com o código IL de um aplicativo para aplicar patches. Estou me perguntando qual seria a abordagem certa. Obviamente, eu poderia descompilar e ler e editar o arquivo de código IL e depois recompilar. Mas existe alguma maneira de lê -lo como código MSIL diretamente no arquivo. E talvez edite -o em tempo real.

Eu estava tentando editar o código decompilado de um executável. Mas cada vez que eu o recompia, eu tinha um problema com a execução. Como se não pudesse mais encontrar seu ponto de entrada. Como faço para calcular isso? Estou supondo que preciso saber o comprimento dos comandos e seus parâmetros, ou para tornar o ponto de entrada um rótulo ou algo assim. Eu seria bom se houvesse um modelo de Visual Studio para algo assim.

Foi útil?

Solução

Como alguém que já leu o ECMA-335 especificação várias vezes e Implementou um carregador de imagem da CLI em dois idiomas diferentes (com uma análise completa da IL em um), eu diria que essa ainda seria uma tarefa desafiadora para mim. Eu digo isso porque parece que ambos 1) você não fez isso e 2) está procurando uma resposta fácil. A especificação deve definitivamente ser o seu ponto de partida.

o mínimo procedimento seria:

  • Carregue a imagem PE (exe ou DLL)
  • Analisar o código de byte de todos os métodos e resolver símbolos
  • Aplicar transformações de código (mínimo do curso seria uma única transformação, como renomear métodos privados)
  • Salve o resultado como uma nova imagem de PE

EDIT: Isso não impedirá que você precise aprender sobre a estrutura detalhada dos conjuntos .NET, mas pode economizar algum tempo na implementação real e ajudar a manter sua lógica ofuscadora separada de forma limpa do carregador.

Outras dicas

Para ler o MSIL, com certeza há, em este tópico:

ildasm.exe - Desmontador de linguagem intermediária. Você pode visualizar seu código compilado no nível MSIL com esta ferramenta.

Isso é encontrado no Microsoft SDK.

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