Aplicativos ofuscados criados usando Dotfuscator
resumo
Como os aplicativos baseados no Framework .NET são criados no que é chamado de linguagem intermediária comum, eles podem ser lidos de forma próxima ao código-fonte original usando ferramentas de desmontagem e afins. Esta seção descreve como ofuscar Dotfuscator, o ofuscador que vem com o Visual Studio, para ofuscar nomes de classe e método em um formato que não é facilmente legível.
Estamos falando sobre isso aqui usando o Visual Studio 2010, mas você pode usar o Dotfuscator em 2005 e 2008 também.
Ambiente Operacional
Versões de estúdio visual suportadas
- 2005
- 2008
- 2010
Verifique a versão visual do estúdio
- 2005
- 2008
- 2010
substância
Sobre Dotfuscator
Dotfuscator é uma ferramenta de ofuscação que dificulta a leitura do código fonte quando desmontado em aplicativos escritos com o Framework .NET. Dotfuscator vem com Visual Studio gratuitamente e por uma taxa.
A versão gratuita não está disponível a menos que muitos de seus recursos sejam limitados ou visual Studio seja iniciado, mas qualquer pessoa pode usá-la desde que tenha o Visual Studio instalado. A versão paga tem muitos recursos poderosos de ofuscação que não são encontrados na versão gratuita, mas é oferecido a um preço que é difícil para o público em geral pagar.
O Dotfuscator tem diferentes características, preços e edições, dependendo da versão, então consulte a seguinte página inicial para obter detalhes.
Procedimento de ofuscação
Mencionei anteriormente que os aplicativos criados com o Framework .NET podem desmontar e ler facilmente o código-fonte original, mas a situação real é que se você desmontar o arquivo exe como mostrado na figura à direita, você pode quase reproduzir o código fonte original, como namespace, nome da classe, nome do método, etc.
Descreve os passos para tornar esses nomes confusos e ofuscados.
Criar um aplicativo no Visual Studio e criar um arquivo exe é exatamente a mesma maneira normal de criá-lo.
Depois de construir e criar o arquivo exe, selecione Ferramentas no menu Visual Studio e selecione Dotfuscator Software Services.
Quando você começa pela primeira vez, o diálogo "Contrato de Licença" é exibido como mostrado na figura à direita, então leia o conteúdo cuidadosamente, verifique "Sim, eu concordo com o contrato de licença" e clique no botão "OK".
O Dotfuscator Software Services é iniciado.
O exe (ou arquivo dll) a ser ofuscado não precisa ser do projeto atualmente aberto.
Selecione Conjuntos de entrada da árvore à esquerda e clique nos Conjuntos de Entrada à direita para clicar no ... botão.
Selecione o arquivo exe que deseja ofuscar.
O arquivo exe selecionado é adicionado à lista. Se você quiser ofuscar vários arquivos, clique no botão "..." após a segunda linha para adicioná-los.
Depois de selecionar o exe que deseja ofuscar, clique no botão Construir projetos na barra de ferramentas.
Se houver alguma alteração no projeto, o diálogo de confirmação de salvamento do projeto será exibido, então clique em "Sim" para salvar.
O projeto é chamado de ". arquivo xml". O arquivo exe ofuscado também será salvo no mesmo local, então salve o arquivo .xml para qualquer pasta.
A construção começará e esperará até que esteja completa. Note que quanto maior o programa, mais tempo leva para ser construído. Se parecer com a figura à direita, a construção está completa.
O campo de mensagens exibe resultados simples, como o progresso da compilação e o quão ofuscada ela foi.
Se você selecionar "Resultado" da árvore à esquerda, poderá ver detalhes de como os nomes da classe e do método foram alterados.
Abaixo dos nomes de classe e método, há um ícone Dotfuscator e um nome como "a" ou "b", que é o nome ofuscado. Ao alterar o nome da classe ou do método para um nome sem sentido como este, você pode tornar o conteúdo do código fonte difícil de ler mesmo que seja desmontado.
Arquivos exe ofuscados são criados na pasta de .xml arquivos salvos no Save Project, chamado "Dotfuscated", e são criados nele. Além do arquivo exe, um arquivo "Map .xml" foi criado, mas este é o resultado da ofuscação e não deve ser usado.
Ex-ofuscados podem ser executados e usados como são. No entanto, há casos em que não pode ser iniciado devido a um erro desconhecido, como mostrado na figura à direita.
Desta vez, escrevi um aplicativo no WPF, mas como o arquivo XAML da primeira janela a ser exibida é especificado como uma sequência, o renomeo devido à ofuscação fará com que a referência seja perdida, resultando em um erro.
Os aplicativos do Windows Form fazem referência diretamente à classe From, para que possam ser executados sem erros, mesmo que estejam ofuscados. No entanto, se você especificar um nome de classe, um tipo de enum, etc. pelo nome, você precisa ter cuidado porque existe a possibilidade de que o mesmo erro ocorra.
Se você não quiser ofuscar uma classe ou algo assim, selecione Renomear da árvore no lado esquerdo do Dotfuscator e selecione Excluir na guia do meio.
Cada namespace, nome da classe, etc. serão exibidos na lista à direita, então verifique os itens que você não deseja ofuscar.
Aqui, eu não quero mudar o nome da classe da janela para ser exibido primeiro, então eu checo "MainWindow".
Quando você faz a compilação, você pode ver que não há nome alterado sob o nome de classe em MainWindows. (A classe app foi convertida em "a")
Quando você executa o arquivo exe ofuscado, você pode ver que a janela é exibida corretamente.
Se você desmontar o arquivo exe ofuscado, você pode ver que o nome da classe e o nome do método foram alterados para "a" ou "b" corretamente.
Mas como um aparte. Bibliotecas do NET Framework, como nomes de classe, não estão sujeitas à renomeação porque são montagens que já estão instaladas no Windows e em outros lugares.
Desta vez, ofusco o projeto padrão criado como ele é, então eu acho que há uma imagem que não é tão ofuscada, mas eu acho que o efeito da ofuscação fica claro porque o número de classes etc. aumenta à medida que o projeto cresce.
Além disso, embora tenhamos incluído o procedimento na versão gratuita desta vez, a versão paga permite uma ofuscação mais complexa e também evita a própria desmontagem. No entanto, a ofuscação tem vários efeitos adversos e potencial para ocorrer, por isso, quando o ofuscante é realizado, é necessário fazê-lo considerando se funcionará corretamente desde o início do projeto.