LOGO
Em plataformas .NET
Agenda
Framework .NET
Propriedade intelectual
Engenharia reversa
Demonstração de
engenharia reversa em
.NET
Técnicas de proteção
Demonstração de proteção
de código em .NET
Conclusão
.Net Framework
Framework de desenvolvimento de aplicações;
Oferece facilidades de desenvolvimento de
interfaces, acesso a bancos de dados, criptografia,
aplicações Web e comunicação de rede;
Independência de Linguagens: suporta
programação em múltiplas linguagens;
Segurança: provê vários níveis de segurança na
execução de programas;
.Net Framework
Anywhere
Anytime
Any platform
Any device
.Net Framework
MSIL
Microsoft Intermediate
Language
CLR
Common Language
Runtime
JIT Compiler
Just-in-Time
Compilation (Jitters)
.Net Framework - Características
Interoperabilidade: provê meios de acesso a
funcionalidades implementadas fora do ambiente
.Net;
CLR – Common Language Runtime : programas
.Net são compilados na linguagem intermediária
CLR;
CTS – Common Type System: garante a
integração de tipos de dados entre linguagens
.Net Framework
Propriedade Intelectual
Conceito Jurídico de Software:

Programa de computador é a expressão de um conjunto
organizado de instruções em linguagem natural ou
codificada, contida em suporte físico de qualquer
natureza, de emprego necessário em máquinas
automáticas (...), baseados em técnica digital ou análoga,
para fazê-los funcionar de modo e para fins determinados.
 Lei do Software, Art. 1º
Propriedade Intelectual
Regime de proteção ao software é o concedido às
obras literárias;
(...) Direito do autor de reivindicar a paternidade
do programa de computador e o direito do autor
de opor-se a alterações não-autorizadas (...);
A proteção aos direitos de que trata esta Lei
independe de registro;
Propriedade Intelectual
Alternativas:

Licenças de Software Livre (GPL, Apache, Creative
Commons)
Nem sempre a aplicação de uma licença livre é viável,
principalmente no caso de softwares comerciais.
Engenharia Reversa
Tem como objetivo recuperar o código-fonte de
um software a partir do artefato final (executável
ou biblioteca);
Em alguns países é considerado ilegal, por ser a
base do Cracking;
Mesmo com a proteção da lei sobre o código
fonte, a engenharia reversa pode fornecer
informações importantes sobre a estrutura do
software;
Engenharia Reversa
É útil para manutenções em sistemas legados;
É dependente da arquitetura da linguagem fonte;
Geralmente só se obtém o Assembly.
Engenharia reversa em .NET
Engenharia reversa em .NET
Técnicas de Proteção
Ofuscar



Consiste em embaralhar o código fonte, renomeando
métodos e variáveis para nomes incomuns e aumentar o
caminho entre métodos;
Inverte referencias do tipo GetA() retorna B e GetB()
retorna A;
Para a compilação e para a linguaguem de máquina, o
efeito é o mesmo, mas para o ser humano o
entendimento fica muito dificultado.
Transformação em Binários

Do binário o máximo que se consegue é um Assembly
específico de uma máquina.
Ofuscar
Ofuscar
NecroBit
Consiste em retirar o header CLI do .EXE ou .DLL;
Mantém os métodos e as chamadas, mas passa
toda a regra para um novo arquivo _nat.(exe|dll);
Esse novo arquivo é um binário puro e não
gerenciado pelo Framework .Net;
NecroBit
NecroBit
Conclusão
A CLI apesar de ser um diferencial do .Net,
possibilitando várias linguagens pode prejudicar a
propriedade intelectual dos desenvolvedores mais
ingênuos;
Existem ferramentas muito poderosas para
manter o código fonte protegido, o que pode ser
uma questão de mercado muito forte.
O custo de uma ferramenta de proteção é minimo
diante do prejuizo de um código clonado.
Referências
http://jus2.uol.com.br/doutrina/texto.asp?id=253
0&p=1
http://msdotnetsupport.blogspot.com/2008/02/ne
t-obfuscation-using-dotfuscator-for.html
http://www.macoratti.net/vbn5_pco.htm
Download

Proteção de Código Fonte