proteção de código fonte
DESCRIPTION
Proteção de Código Fonte. 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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/1.jpg)
LOGO
Em plataformas .NET
![Page 2: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/2.jpg)
Agenda
Framework .NETPropriedade
intelectualEngenharia reversaDemonstração de
engenharia reversa em .NET
Técnicas de proteçãoDemonstração de
proteção de código em .NET
Conclusão
![Page 3: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/3.jpg)
.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;
![Page 4: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/4.jpg)
Anywhere
Anytime
Any platform
Any device
.Net Framework
![Page 5: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/5.jpg)
.Net Framework
MSIL
Microsoft Intermediate Language
CLR
Common Language Runtime
JIT Compiler
Just-in-Time Compilation (Jitters)
![Page 6: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/6.jpg)
.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
![Page 7: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/7.jpg)
.Net Framework
![Page 8: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/8.jpg)
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º
![Page 9: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/9.jpg)
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;
![Page 10: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/10.jpg)
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.
![Page 11: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/11.jpg)
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;
![Page 12: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/12.jpg)
Engenharia Reversa
É útil para manutenções em sistemas legados;
É dependente da arquitetura da linguagem fonte;
Geralmente só se obtém o Assembly.
![Page 13: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/13.jpg)
Engenharia reversa em .NET
![Page 14: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/14.jpg)
Engenharia reversa em .NET
![Page 15: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/15.jpg)
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.
![Page 16: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/16.jpg)
Ofuscar
![Page 17: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/17.jpg)
Ofuscar
![Page 18: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/18.jpg)
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;
![Page 19: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/19.jpg)
NecroBit
![Page 20: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/20.jpg)
NecroBit
![Page 21: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/21.jpg)
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.
![Page 22: Proteção de Código Fonte](https://reader036.vdocuments.pub/reader036/viewer/2022081506/56814cf7550346895dba0402/html5/thumbnails/22.jpg)
Referências
http://jus2.uol.com.br/doutrina/texto.asp?id=2530&p=1
http://msdotnetsupport.blogspot.com/2008/02/net-obfuscation-using-dotfuscator-for.html
http://www.macoratti.net/vbn5_pco.htm