A engenharia reversa
e o De-CSS
Quando uma pessoa compra
um software, seja pela internet ou em CD-ROM, ele está gravado como
um arquivo binário. O arquivo binário é gerado a partir do código-fonte,
que é escrito pelo programador em uma linguagem mais acessível que
o código de máquina. Esse arquivo pode ser compreendido
pelo chip do computador e executado. De fato, ele é tudo o que o computador
precisa para executar o programa.
Porém o código binário
é difícil - quase impossível - de ser compreendido por seres humanos.
Essa peculiaridade da programação de computadores é que permite, no
mundo atual da informática, a preservação do direito autoral sobre
software: se você faz um programa e o vende na forma de arquivos binários,
ninguém conseguirá abrir-los e ver como o programa funciona. Com isso,
o código em que se escreveu o programa, conhecido como código-fonte,
é mantido sob domínio da empresa.
Isto funciona assim para
a grande maioria dos usuários comuns de computadores. Mas uma minoria
de programadores e engenheiros de computação consegue
abrir arquivos binários e modificar programas através da técnica conhecida
como "engenharia reversa".
Resumidamente, a engenharia
reversa é uma tentativa de aprender como um software funciona estudando-o
em uma linguagem computacional "primitiva" (muito próxima à linguagem
binária da máquina) conhecida como assembly, ou assembler. O assembly
pode ser entendido como uma tradução quase literal de cada uma das
pequenas instruções que compõem um programa de computador. É detalhado
e enfadonho, se comparado às linguagens modernas mais abstratas, como
o C++ ou o Pascal.
É possível fazer a conversão
entre o binário e o Assembler. Isso gera um código difícil de compreender,
mas não impossível. Se você quiser ver um exemplo disso em
tempo real, use o programa Debug, disponível
no MS-DOS.
No entanto, há dois aspectos
que tornam a engenharia reversa problemática: o primeiro é que ela
é proibida em alguns países, por ser entendida como violação de direitos
autorais. O outro problema é mais sutil: um programa é uma tradução,
para o computador, de fórmulas matemáticas conhecidas como algoritmos,
cujo patenteamento é discutível, como se fosse possível também patentear
a lei da gravitação de Newton, que é igualmente uma fórmula matemática.
Ou ainda a fórmula de Báskara, que resolve equações do segundo grau.
Um software é um conjunto de algoritmos escritos em uma forma que
o computador entende e executa como instruções, aplicando-as aos dados
que o usuário fornece.
Nos EUA e Europa a briga
envolve grandes companhias, como a Microsoft e comunidades de programadores
de software livre unidos pela internet. Destas, uma das mais atuantes
é a do Linux, forte na Europa, onde há muita resistência aos produtos
Microsoft, e a Free Software Foundation que existe desde 1985, distribuindo
software livre, sistemas operacionais inteiros, totalmente gratuitos.
Sobre isso, veja a opinião
de Carlos Paniago, administrador de rede da Embrapa,
uma empresa que utiliza sistemas operacionais
livres em seus computadores...