Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
vantagens e desvantagens.
Joel Simberg Vieira
para entender o que é de fato tutelado pelo Estado. Começando com a lei de proteção
d-) diagramas;
e-) fluxogramas;
existem porque muito mais que códigos objeto e fonte estão sendo considerados, ou
2
Software é uma sentença escrita em uma linguagem
computável, para a qual existe uma máquina (computável) capaz
de interpretá-la. A sentença (o software) é composta por uma
seqüência de instruções (comandos) e declarações de dados,
armazenável em meio digital. Ao interpretar o software, a máquina
computável é direcionada à realização de tarefas especificamente
planejadas, para as quais o software foi projetado.
2 http://www.cic.unb.br/~jhcf/MyBooks/iess/Software/oqueehsoftware.html
3
No glossário do livro da Dra. Patricia Peck Pinheiro, encontramos a
definição de Software:
2 DESENVOLVIMENTO
ao autor de obra estética, como de um quadro, um livro, uma música. Para proteção de
invenções técnicas temos as leis de patentes. No caso do software, ele tem proteção
Programa de computador, segundo a lei 9609 no seu Art. 2º, tem seu regime
de proteção como uma obra literária, mas com legislação específica. Apesar dessa
se cair em domínio público é de 70 anos após a morte do autor, iniciando pelo início do
programa de computador.
Temos que observar que existem áreas que a proteção autoral não alcança,
Existe ainda como falado a proteção patentaria, caso haja sido feito esse
em si, conforme artigo 10 inciso V, ou seja, não é considerado invenção nem modelo
de utilidade. O programa de computador não tem proteção patentaria apenas por ser
um novo processo é passível de proteção por patente, ou seja, uma criação industrial
autoral.
Conceito de Clone
4
Programa que é funcionalmente equivalente, porém distinto
de outro programa de computador, do qual imita o modo de
funcionamento.
Ele é legítimo e aceito, por ajudar a impedir o monopólio, o que é muito bom
para a sociedade.
janelas, menus, teclas de atalho, que não são protegidos pelo direito autoral, mas não
pode ter a mesma forma de expressão que é a parte protegida. Porém se o programa
tenta confundir o usuário para que ele ache que está comprando o programa
Textos de “Ajuda”, são protegidos por direito autoral, como texto literário,
bem como Imagens e ícones que podem estar protegidos também por direito autoral.
Caso julgado onde o fato de dois programas serem parecidos não implica
Conceito de plágio
5
Plágio é a usurpação do trabalho criativo de terceiro, é a
cópia disfarçada.
se fosse seu, esse hábito ilícito ocorre em todas as áreas, mesmo em trabalhos
verdadeira autoria.
6
Pode haver cópia de partes do código-fonte de outro programa, ou mesmo
como na proteção de obra literária, não só o texto é protegido, mas seus elementos
não-literais também são protegidos. Por exemplo, alguém copia a história, trocando
usurpação de autoria.
Cópia Servil
6 Dos Santos, Manoel Joaquim Pereira. A Proteção Autoral de Programas de Computador. Rio de
Janeiro, Lumin Juris. 2008 pg 356
Em um contrato de licenciamento, muitas vezes para o usuário não é claro
que ao comprar uma licença, ele não está comprando o programa, mas o direito de uso
pode instalar em várias máquinas ou emprestar para terceiros. Muito menos vender ou
emprestar o programa.
Conceito:
7
"É o processo de análise de um determinado sistema com dois
objetivos em mente :
1) identificar os componentes do sistema e o seus inter-
relacionamentos; e,
2) criar representações do sistema em outra forma ou em níveis
mais altos de abstração. "
Engenharia Reversa normalmente é empreendida com o objetivo
de reprojetar um sistema para melhorar a sua manutenção ou
produzir uma cópia de um sistema sem acesso às informações de
seu projeto original.
8
Descobrir os princípios tecnológicos de um dispositivo, um objeto
ou um sistema (programa).
fica normalmente como segredo industrial, seria descoberto e com isso seu
expressão, poderia se criar um plágio desse programa, sem ter investido tempo e
7 http://www.dcc.ufrj.br/~schneide/es/2001/1/g18/Engenharia%20Reversa.htm
8 https://docs.google.com/present/view?fs=true&id=ddd3j862_29grq4sx
Quando se trata da discussão sobre Engenharia Reversa, existem pontos
que agora se firmam e que estão mais maduros, tanto no Brasil, como no mundo. No
seu funcionamento e puderam fabricar o bombardeiro Tupolev Tu-4, que voou pela
9
Reverse engineering has a long history as an accepted
practice. What it means, broadly speaking, is the process of
extracting know-how or knowledge from a human made artifact.1
Lawyers and economists have endorsed reverse engineering as
an appropriate way to obtain such information, even if the intention
is to make a product that will draw customers from the maker of
the reverse-engineered product.2 Given this acceptance, it may be
surprising that reverse engineering has been somewhat under
siege in the past few decades.
9 http://socrates.berkeley.edu/~scotch/re.pdf
(tradução livre, com ajuda de ferramentas on-line de tradução)
Engenharia Reversa tem uma longa história como prática
aceita. O que significa, em termos gerais, é o processo de
extração de know-how ou conhecimento, de um ser humano, de
artefatos feitos. 1 Advogados e economistas têm endossado
engenharia reversa como um meio adequado para obter tais
informações, mesmo que a intenção é fazer um produto que vai
atrair os clientes da fabricante que teve a engenharia reversa em
seu produto .2 Mesmo com essa aceitação, pode ser
surpreendente que a engenharia reversa tem sido colocada em
questionamento nas últimas décadas.
10
Sniffers: (Farejadores) Servem para observar o funcionamento de uma
rede de computadores, os pacotes que passam por ela, também interceptar e registrar
o tráfego de dados. Conforme o fluxo de dados trafega na rede, o sniffer captura cada
analisados pode ser usada para gerar em um novo software que imita o
10 http://pt.wikipedia.org/wiki/Sniffing
Por exemplo: Uma impressora funciona em um sistema operacional, mas em
outro não há o driver (programa que permite que o equipamento funcione naquele
11
Um programa muito usado hoje, conhecido como Samba, não por amor ao
Brasil, ou por ser descoberto por um brasileiro, mas sim por ter sido feito Engenharia
estudo a palavra que mais se encaixava com essas três letras foi Samba, pois o autor
não poderia usar como nome “smb” por ser proprietário. Esse programa foi criado
operacionais diferentes.
Desassemblar:
linguagem de montagem.
11 http://pt.wikipedia.org/wiki/Samba_%28servidor%29
Decompilação:
gerados em Delphi (uma linguagem de alto nível), que creio ser interessante e
elucidativo, colocarei apenas algumas partes do artigo que devam ajudar a entender os
12
Então é possível Decompilar um programa?
Reversa, não só em termos Legais, mas em termos técnicos. Pois quando a dificuldade
12 http://littleoak.wordpress.com/2009/02/19/como-decompilar-programas-em-delphi-how-to-decompiler-
delphi-application-decompilar-delphi/
Pois muitas vezes, acredita-se que o processo é simples, rápido e fácil, o que não
13
No caso do Visual Basic decompilar um programa é algo
quase impossível de se obter. Isto mesmo , você nunca , nunca
vai obter os fontes originais como eles foram escritos pelo
programador. Quer saber por que ? Vamos lá...
Quando um projeto Visual Basic é compilado e linkado para
produzir um arquivo executável a maioria dos nomes usados no
programa é convertido em endereços; os nomes da constantes,
variáveis e procedimentos são trocados.
botão, é necessário fazer uma análise do código obtido, há técnicas bem definidas que
veremos abaixo.
14
O trabalho de Engenharia Reversa é feito em etapas bem
definidas:
13 http://www.macoratti.net/vb_dcp1.htm
14 http://forum.guiadohacker.com.br/showthread.php?t=3546
• Análise da Documentação
classes, etc;
• Ferramentas que fazem essa análise são chamadas de “parser”, para conhecer
Análise Dinâmica
denominadas de "Debuggers".
Dados
computadores PC em rede.
Documentação
de processador, etc.
• Anomalias no Código
• Encapsulamento
• "Slicing"
• (Re-) Modularização
• Reconhecimento de Clichés
• Dados
• Documentação
Tendo as devidas informações, é possível e muitas vezes necessário alterar
Anomalias no Código
que nunca podem ser executadas ("dead-code"), teoricamente não seriam complicadas
Essas anomalias complicam o código inutilmente, fazendo ele mais longo do que
Encapsulamento
o velho código dentro de uma outra camada. Por exemplo, um código em uma
seja com várias classes. Para o exterior, o código é orientado a objetos, mas os
uma classe e na necessidade de uso, fazer a chamada a essa classe, que parece
determinada variável. Seria estudar por partes o código, tentando encontrar a causa de
erros.
(Re-) Modularização
mesmo. Dessa forma é mais fácil organizar e compreender o código e ver suas inter-
Reconhecimento de Clichés
várias linguagens. Padrões criados para que quando houver troca de programador este
possa continuar o trabalho, sabendo relacionar o nome das classes e funções com sua
padrões de programação. Uma classe que tem por nome: “Connection Factory”
Dados
Agora as atividades aqui se relacionam, porque os dados agora são
Documentação
15
3-)Visualização dos Resultados
• Navegação
• Quantidade de Informação
Navegação
nos nomes dos componentes de software, testando se de fato todo o trabalho ocorre
Quantidade de Informação
15 http://www.dcc.ufrj.br/~schneide/es/2002/1/g13/trabalho.htm
Esse pequeno estudo sobre a Engenharia Reversa de software serve para
mostrar que o processo é complicado e demorado e pode não ter o resultado esperado,
com o trabalho da engenharia reversa, mas claro que para determinadas situações a
Engenharia Reversa. Coloquei a integra em Inglês e depois uma tradução livre minha,
16
Copyright law protects programs from the cheapest and
most rapid way to make a directly competing identical product,
namely, copying program code exactly. However, reverse
engineering of object code is generally so difficult, time-
consuming, and resource-intensive that it is not an efficient
way to develop competing but non-identical programs. As one
technologist has explained, software reverse engineering does not
“lay bare a program’s inner secrets.
Indeed, it cannot. The inner secrets of a program, the real
crown jewels, are embodied in the higher levels of abstraction
material such as the source code commentary and the
specification. This material never survives the process of being
converted to object code.”A software reverse engineer must do
considerable intellectual work to extract higher level
abstractions and information from the text of the decompiled
program, and still more work to incorporate what he or she
has learned from this analysis in a new program. In this
respect, software resembles traditional manufacturing products
because firms are generally insulated from market-destructive
reverse engineering and reimplementation because of high costs
and difficulties of these activities for the purpose of making
directly competing products.
Given the high costs and difficulties of software reverse
engineering, it may seem surprising that it is such a standard
industry practice. Software engineers reverse-analyze programs
for a variety of reasons, including to fix “bugs” (i.e., logical
errors in program instructions), to customize the program for
16 http://socrates.berkeley.edu/~scotch/re.pdf
the user’s needs (e.g., add some firm-specific features), to
detect infringement, and to learn what others have done. We
focus our economic assessment of reverse engineering in the
software industry on interoperability for two reasons: first, because
this has been the most economically significant reason for
software reverse engineering and second, because most of the
litigation about software reverse engineering has involved
interoperability issues.
Tradução
trabalho penoso e de custo alto. Mas, quais seriam as razões que impulsionariam as
empresas ainda continuarem a fazer esse trabalho. Várias seriam as razões, inclusive
uma das razões foi a mais aceita nas brigas judiciais e acabou sendo a liberação para
17
(Santos) A Diretiva Européia 91/250/CEE Artigo 6 (1) regula a
A terceira é de que a de que seja feita apenas na parte do código que seja
Ainda no Artigo 6 (2) há limites para que a informação obtida seja usada
terceiros e claro que não possa haver desenvolvimento de programas que sejam
17 A proteção Autoral de Programas de Computador – Manoel Joaquim Pereira dos Santos – Lumen
Juris – Rio de Janeiro - 2008
tempo, que seria lícito fazer. Se pensarmos que por nem haver nenhuma citação sobre
quando se faz a Engenharia Reversa, você cria várias sub-cópias do programa e a lei
9609 no seu artigo 6 na alínea I, diz que será permitido apenas a reprodução de um só
eletrônico.
Não só limita a apenas uma cópia, como também estabelece para qual
razão.
computador que não pertença ao próprio executante poderia ser considerado crime.
Engenharia Reversa, como por exemplo: estudo de um sistema, reparo de defeitos que
comprometam o funcionamento do programa, desde que não haja ação corretiva por
uma Engenharia Reversa no Brasil, nas outras razões, como estudo e reparo, não
encontramos respaldo em nossa legislação, mas em outras partes do mundo, há uma
Artigo 6° Descompilação
1. Não é necessária a autorização do titular dos direitos
quando a reprodução do código e a tradução da sua forma, na
acepção das alíneas a) e b) do artigo 4o, forem indispensáveis
para obter as informações necessárias à interoperabilidade de um
programa de computador criado independentemente, com outros
programas, uma vez preenchidas as seguintes condições:
a) Esses actos serem realizados pelo licenciado ou por outra
pessoa que tenha o direito de utilizar uma cópia do programa, ou
em seu nome por uma pessoa devidamente autorizada para o
efeito;
b) Não se encontrarem já fácil e rapidamente à disposição
das pessoas referidas na alínea a) as informações necessárias à
interoperabilidade;
c) Esses actos limitarem-se a certas partes do programa
de origem necessárias à interoperabilidade.
Artigo 6° Descompilação
2. O disposto no n° 1 não permite que as informações
obtidas através da sua aplicação:
a) Sejam utilizadas para outros fins que não o de assegurar
a interoperabilidade de um programa criado independentemente;
b) Sejam transmitidas a outrem, excepto quando tal for
necessário para a interoperabilidade do programa criado
independentemente; ou c) Sejam utilizadas para o
desenvolvimento, produção ou comercialização de um programa
substancialmente semelhante na sua expressão, ou para qualquer
outro acto que infrinja os direitos de autor.
3. De acordo com o disposto na Convenção de Berna
para a Protecção das Obras Literárias e Artísticas, as disposições
do presente artigo não podem ser interpretadas no sentido de
permitirem a sua aplicação de uma forma susceptível de lesar os
legítimos interesses do titular de direitos ou que não se coadune
com uma exploração normal do programa de computador.
ficou sem o fonte e que precisa ser readaptado ou melhorado, também é um importante
outros softwares e para estudo. Também é importante para que concorrentes possam
visto que ideia não é protegida por direito autoral e nem por proteção de patentes e é
se empregam para se fazer uma Engenharia Reversa, pois ela não é simples, nem
aproveitável, pois há sistemas que são muito antigos e mesmo tendo o código-fonte,
seu uso seria inadequado, pois todo software tem seu ciclo de vida.
BIBLIOGRAFIA