A cultura Cracker e a Engenharia Reversa (Novembro/2005)
Por Ricardo Drizin e Ulisses Buonanni
Bacharelado em Ciência da Computação - Instituto de Matemática e Estatística - USP
1 Objetivo, Motivações, Introdução
1.1 Objetivo
O objetivo deste trabalho é de introduzir a cultura cracker, com ênfase no software cracking e engenharia reversa, mas abordando também algumas áreas similares ou relacionadas historicamente. Abordaremos o surgimento da atividade cracker, história, motivações, o software cracking como propulsor de outras comunidades, as tecnologias utilizadas, os aspectos legais, e o papel da engenharia reversa na atualidade.
O termo cracker estará sendo usado no trabalho de acordo com a nomenclatura usual das comunidades de programadores (um hacker que participa de atividades ilegais), no entanto é importante frisar que nem todas as atividades mencionadas no trabalho são ilegais, de modo que a opção da palavra cracker foi apenas uma escolha nossa para não confundir com o sentido usual de hacker utilizado pela comunidade opensource.
1.2 Motivações
Os autores do trabalho vivenciaram a época pré-internet em que a cena dos BBS chegou ao auge no Brasil, e tiveram grande contato com a comunidade cracker, com algumas de suas vertentes em especial.
Ricardo Drizin foi sysop de um BBS voltado a comunidade cracker e teve contato com alguns dos principais phreakers do mundo, com os quais tomou gosto pelo mundo da tecnologia sendo estudada e burlada.
A idéia do trabalho foi no sentido de nos aprofundarmos no tema e complementarmos com nosso prévio conhecimento sobre o assunto.
1.3 Introdução
Antes de tudo, é importante frisar que nem toda atividade cracker tem relação com a engenharia reversa, e nem sempre a engenharia reversa é ligada a atividades crackers. No entanto, ambas tem laços muito estreitos, e usualmente são associadas, já que a grande responsável pela atividade cracker é a engenharia reversa, e a grande aplicação da engenharia reversa é a atividade cracker.
2 Dicionário de Termos
2.1 BBS
Bulletin Board System, um computador rodando software que permite que usuários se conectem no sistema através de uma linha telefônica, e possam baixar ou enviar arquivos, jogar jogos, ler noticias, e trocar mensagens com outros usuários
As BBS foram, em vários sentidos, precursoras da Web e de outros serviços/conceitos da Internet. Foram um enorme fenômeno social utilizado para encontro de pessoas com gostos semelhantes, troca de mensagens e softwares.
O operador (dono) de um BBS era chamado de Sysop (System Operator)
2.2 Cracker
Existe muita divergência com o termo cracker. Utilizaremos a definição de Eric S. Raymound:
One who breaks security on a system
Juridicamente podemos nos basear na definição da FindLaw?‘s Modern Practive – Law Practice and Technology Magazine e dizer que cracker é alguém que invade sistemas de computadores, descobre modos de bular barreiras de segurança ou proteções de software e explora intencionalmente falhas na segurança de computadores.
É importante frizar que hackers e crackers são termos diferentes. Uma diferenciação muito boa também feita por Raymond, publicado no livro: How To Become A Hacker, é a seguinte:
“The basic difference is this: hackers build things, crackers break them.”
Segundo a Universidade do Estado de Montana o termo cracker foi criado em meados da década de 80 por hackers que queriam diferenciar aqueles que estavam mais interessados por expandir seus conhecimentos por sistemas de computadores, os hackers, com aqueles que queriam apenas burlar seguranças ou descobrir e explorar falhas em sistemas, os crackers.
2.3 Warez
Software proprietário disponibilizado ilegalmente. Nos casos em que o software possui proteção contra cópias, os warez costumam vir crackeados ou junto com um crack.
3 Engenharia Reversa – Introdução e Passado
3.1 O que é?
Engenharia Reversa trata-se da descompilação de um sistema (ou de partes deste) para determinar seu funcionamento e copiá-lo ou aperfeiçoá-lo.
Este conceito aplica-se tanto a hardware como a software. No caso de software, a técnica funciona independente da linguagem de programação usada para criá-lo, de modo que pode-se obter informações sobre como o software funciona ou como implementa protocolos, até então secretos.
Diferentemente do que pode-se pensar, esta prática não surgiu com a computação, apenas foi absorvida de outro tipo de indústrias onde ela já existia há decadas. Na industria automobilistica, por exemplo, os fabricantes algumas vezes compram um veículo de outro fabricante para desmontá-lo, examinar suas peças e componentes para aperfeiçoar seus próprios veículos com componentes ou tecnologias similares.
A Engenharia Reversa no caso de hardware, requer um nível muito maior de conhecimento, e é muito mais cara que a de Software. Um fabricante, por exemplo, se quiser saber como o processador do concorrente funciona, pode comprá-lo, fazer a engenharia reversa, e criar um processador similar. Em geral a ER de Hardware utiliza ferramentas eletrônicas de medição, como multímetro, osciloscópio, e um programador de dispositivos.
3.2 Motivações e paralelo com outras ciências
A Engenharia Reversa, além de motivações econômicas, militares, ou mesmo por necessidade, costuma normalmente ocorrer como resultado da curiosidade humana. As pessoas fazem para “ver se conseguem”, por assim dizer.
O ser humano tem uma necessidade de compreensão e de domínio sobre o mundo ao seu redor que causa avanços em todas as áreas de conhecimento humano, e é essa necessidade que propulsionou as bases da Física, da Filosofia, e de outras ciências.
No caso da ER de software, esta compreensão normalmente se dá através da observação e do entendimento do comportamento de um software. O domínio se dá através da possibilidade de modificá-lo e fazer com que este software faça algo diferente do que fazia originalmente.
3.3 No princípio era o Cracking – história da Atividade Cracker
A história do cracking nos remete a própria história do software comercial. No entanto, o cracking efetivamente evoluiu em um grande cenário underground no começo dos anos 80, nos computadores Apple II, Atari 800 e Commodore 64.
Assim como as diversas comunidades digitais (undergrounds ou não), os primeiros hackers envolvidos no software cracking se juntaram em grupos, criando os “Cracking Crews”, ou grupos de cracking, normalmente muito ligados a pirataria de softwares comerciais (warez).
Um grupo de cracking era composto de:
- Crackers: programadores que quebravam as proteções dos softwares Muitas vezes os Crackers não eram programadores no sentido completo da palavra, pois não era necessário ser programador para saber quebrar um software – bastava algum conhecimento de assembly, e alguma experiência.
- Suppliers (fornecedores): pessoas que costumavam ter acesso a softwares muitas vezes antes mesmo de seu lançamento, e disponibilizavam estes softwares ao grupo antes mesmo de ele estar disponível comercialmente. Como exemplo, pode-se citar o Microsoft Windows 95 e o Windows 98, softwares que circulavam nos BBS do cenário pirata semanas antes de serem lançados oficialmente em lojas. Isto atraia aos grupos crackers a atenção de pessoas totalmente desinteressadas no software-cracking (como uma arte) em si, que passavam a ver os grupos de cracking como fontes de novidades em jogos ou aplicativos.
- Traders ou Couriers: pessoas que distribuiam os cracks e/ou os softwares crackeados através do mundo o mais rápido possível, na maioria das vezes através de ligações gratuitas (phreaking) para BBS ao redor do mundo, onde enviavam os cracks e softwares de seu grupo.
- Sysops: eram os operadores (SYStem OPerators) dos BBS ao redor do mundo que redistribuiam os cracks e softwares.
Normalmente haviam BBS representantes do grupo em cada continente, país, ou região, chamados de Headquarters (“quarteis generais” de redistribuição). Os grupos de crackers disputavam entre si pela fama (ego), sempre correndo para serem os primeiros grupos a distribuir os softwares recém lançados com seus respectivos cracks. Haviam também alguns grupos de warez (e BBS comerciais, que cobravam mensalidades dos assinantes) que faziam suas atividades pelo dinheiro, mas eram mais raros.
Conforme explicado acima, o grande impulso da cena cracker foi a distribuição de warez, e a maioria dos BBS envolvidos na cena cracker normalmente eram apenas pólos de pirataria. No entanto, alguns dos BBS se dedicavam ao lado “intelectual” da atividade cracker, se especializando em assuntos como engenharia reversa, criptologia, vírus, phreaking, etc. Haviam inclusive redes de mensagem mundiais (pré-internet) de conteúdo exclusivamente cracker.
Alguns paralelos com a comunidade open-source são evidentes:
- Ambas as atividades se organizam através de comunidades estruturadas e com papéis bem definidos
- Ambas as atividades envolvem um certo grau de ego programming, no sentido de que buscam reconhecimento dos outros da cena.
- Ambas as atividades podem de certa forma ser consideradas “ideologicamente contra o software proprietário”.
- Ambas as atividades tem a maioria de seus contribuidores motivados pelo próprio gosto pela atividade, apesar de haver alguns poucos motivados pelo dinheiro.
3.4 O software cracking como propulsor de outras comunidades
O software cracking, além de estar extremamente ligado a pirataria, também fortaleceu diversas outras atividades hackers.
Phreaking (phreaking)
Phreaking refere-se a atividade cracker de se burlar as redes telefônicas para se conseguir ligações gratuitas. Surgiu nos Estados Unidos ainda no início do século passado, mas somente ganhou força e de espalhou com o surgimento do cenário dos BBS, do software cracking, e dos grupos de distribuição de warez.
Estes hackers de telefonia (phreakers) utilizavam as ligações gratúitas que sabiam fazer para se divertir navegando em BBS ao redor do mundo, enquanto espalhavam os lançamentos (warez) de seus grupos crackers.
Há diversos tipos de phreaking, sendo que os mais comuns são:
- Bluebox: enganar troncos telefônicos internacionais, ligando em telefones gratuitos (toll-free) localizados em outro país, e emitindo frequencias que enganavam estes troncos para obter controle total sobre eles e poder fazer ligações gratuitas para qualquer país.
- Blackbox: enganar telefones públicos americanos, através da emissão de frequências que simulavam fichas telefônicas.
- PABX: descobrir (através de força bruta) os números e senhas de centrais PABX (hosted PBX) de empresas que disponibilizavam este serviço para que seus funcionários pudessem fazer ligações DDD/DDI de fora do escritório utilizando as linhas da empresa.
A lista de phreakers famosos inclue Steve Wozniak e Steve Jobs (nos anos 70), que alguns anos depois se tornariam os fundadores da Apple.
Demoscene (demoscene)
Com o tempo, os cracks começaram a vir com “crack intros” (introductions), que normalmente eram pequenas introduções (mencionando o grupo criador do crack) antes do crack ser executado, com animações, música, etc. Estas intros deram origem ao que veio a se tornar pouco tempo depois a “demoscene”, outro dos muitos cenários underground onde grupos de pessoas se uniam para a criação de demos.
Esta “emancipação” se deu no final dos anos 80, quando a parte legal (e artística) e a parte ilegal do cenário de warez/cracks se separaram. A demoscene foi um dos principais passos para a evolução da arte digital, tendo dado origem (ou impulso) aos músicos digitais, artistas gráficos, competições de demos (demo parties e competitions), etc.
Ironicamente, alguns dos pioneiros da demoscene, que criavam intros para cracks, acabaram devido ao seu conhecimento de programação gráfica indo trabalhar na indústria de jogos.
Hackers de sistemas
Em meados dos anos 90, com o crescimento e popularização da Internet, os BBS perderam sua força e glamour. A partir de então pelo preço da mesma ligação local, era possível navegar pelo mundo todo, e não só dentro de um único BBS.
Esta mudança causou também uma migração dos grupos crackers para a Internet, que viram na rede um novo ninho para seus grupos e para a distribuição de seus softwares.
Esta mudança de ambiente propulsionou o hacking de sistemas (security hacking, ou network hacking), atividade responsável por quebrar acesso à máquinas disponíveis na rede, para poder usufruir de seus recursos. A partir do momento que um hacker conseguia invadir uma máquina com conexão permanente à internet, ele poderia hospedar arquivos, websites, e qualquer outra informação ou serviço que desejasse.
A engenharia reversa tem papel fundamental nesta atividade, em especial no descobrimento de falhas nos softwares, como por exemplo os buffer overflows.
Criadores de Virus
A comunidade dos Criadores de Virus não tem relação direta com o software cracking, mas sim com a engenharia reversa. Desde o começo dos anos 80, diversos experimentos na criação de vírus foram realizados, e com o tempo acabou se desenvolvendo um forte conhecimento sobre técnicas de criação destes vírus.
A área tem grande relação com a criptografia (visto que os vírus atuais costumam utilizar criptografia para dificultar sua detecção através do chamado polimorfismo) e com a engenharia reversa (visto que utiliza-se de informações sobre os formatos dos executáveis para a criação de um código-infector).
A comunidade da virologia, assim como a de software cracking, é responsável por diversos e-zines (eletronic magazines), abordando conteúdos como virologia, criptologia, polimorfismo, detecção de vírus, infecção de executáveis de Windows/DOS/Linux, entrevistas com os gurus da área, etc.
4 O software cracking – aspectos técnicos
4.1 A quebra de proteções anti-cópias
A quebra de proteções (quase sempre proteções anti-cópias), conhecida também como “Software Cracking”, talvez seja o aspecto mais conhecido
da engenharia reversa. Trata-se da modificação (ilegal, pois infringe copyrights) de um software, para remover a proteção anti-cópias, permitindo que o software seja utilizado sem a posse de uma licensa. O cracking normalmente (mas nem sempre) é feito através da engenharia reversa.
Dois exemplos de cracking seriam modificar um jogo para que este possa ser jogado sem a necessidade de se possuir o CD original no drive, ou modificar um software cuja licença foi gerada baseada nas configurações de determinado hardware, permitindo que este seja executado em outras máquinas (ou mesmo permitindo que a máquina seja alterada, em caso de falha de hardware).
A grosso modo, pode-se dizer que para quebrar uma proteção anti-cópias basta localizar o trecho de código que é responsável por determinar se o software é original ou não, e modificá-lo para que a validação sempre indique um software original, ou mesmo modificá-lo para que nenhuma ação seja tomada no caso contrário.
4.2 A eterna promessa de proteção anti-cópias
Periodicamente surge alguma nova tecnologia que promete acabar com o software cracking e garantir um software seguro contra pirataria. Alguns dos métodos que já fracassaram são baseados em encriptadores de código, as vezes baseados em chaves públicas/privadas, as vezes baseados em assinaturas (identificadores) de hardware, às vezes em uma mistura de ambos, etc. Inclusive no campo de proteção de direitos autorais (cópia de MP3s, por exemplo) estas mesmas promessas também tem fracassado.
A verdade é que a partir do momento em que a proteção se baseia em rotinas de software, e o software é completamente “descompilável”, toda proteção é quebrável, dado o devido tempo e esforço.
A última das promessa de proteção anti-cópias está na própria arquitetura dos processadores novos, que virão com tecnologias embutidas que permitirão identificação única (e impossível de forjar), e permitirão a decriptografia do código seguro (encriptado) dentro do próprio processador. Técnicamente a comunidade cracker insiste que tudo é possível de se quebrar, dado o devido tempo e esforço, e afirmam que estas novas tecnologias de segurança via processador que serão lançadas serão possíveis de serem quebradas através de emuladores que reproduzirão o comportamento dos processadores.
A conclusão que tiramos a partir de uma análise técnica desta briga é que esta batalha não acaba tão cedo.
4.3 Tools of the trade: a tecnologia a favor do conhecimento
A engenharia reversa pode ser feita com o auxílio de várias ferramentas:
- Hexadecimal dumper/editor: mostra ou imprime o conteúdo binário de um software em formato hexadecimal. É utilizado para modificação de strings, ou instruções. Normalmente as pessoas identificam as instruções a serem modificadas através de um disassembler, e então utilizam o hexadecimal editor para modificar os bytes desejados.
- Disassembler: lê o código binário e mostra cada instrução executável referente ao código. Os disassemblers mais modernos fazem análises complexas sobre os códigos de máquina e determinam diversas estruturas de programação, como ifs, switchs, e estruturas de dados comuns.
- Debugger: semelhante ao disassembler, mas ao invés de fazer análise do código ele mostra as instruções e permite que o programa seja executado passo a passo, e que o cracker faça modificações (em tempo de execução) nas instruções do programa, registradores, breakpoints, etc.
- Descompilador: para reconstruir código em uma linguagens de alto nível utiliza-se um descompilador, que faz o disassembly do programa e após isso faz uma análise baseada em características específicas da linguagem/compilador utilizados na compilação do software.
- System hookers: um hooker é qualquer software que se “anexa” em determinadas posições de memórias do sistema operacional e passa a monitorar chamadas a determinadas funcionalidades. Pode-se monitorar por exemplo todas aberturas de arquivos, ou leituras do registro do Windows. (é uma das técnicas para identificar como o software faz a verificação de autenticidade)
- Packers e Unpackers: packers são softwares criados para “empacotar” e encriptar outro software de forma que ele seja decriptado em memória apenas durante a execução, de modo que não seja possível crackear o executável do software em disco. Os unpackers se baseiam no princípio inverso, de que em algum instante o software acaba sendo decriptado completamente em memória, e basta fazer um “snapshot” (uma fotografia) da memória neste instante para termos uma versão decriptada e crackeável do software.
5 Reversing the world – Descompilando em nome de um mundo melhor
Como a engenharia reversa pode ser utilizada para abrir novas possibilidades no desenvolvimento do software.
5.1 Os formatos proprietários e o Samba
Formatos proprietários de arquivos ou protocolos são uma das grandes barreiras ao livre arbítrio na escolha do software. Normalmente os formatos proprietários bem estabelecidos (com grande público de usuários), como por exemplo os documentos do Microsoft-Office, acabam obrigando as pessoas a utilizar o software que originalmente criou o formato proprietário.
Com a engenharia reversa, muitos formatos proprietários de arquivos e protocolos foram analisados e mapeados, de forma que os “clones não proprietários” puderam surgir. Os dois maiores exemplos são o OpenOffice, que lê arquivos de formato Microsoft-Office; e o SAMBA, que compartilha arquivos e impressoras em um protocolo de compartilhamento compatível com os sistemas Windows, possibilitando o Linux substituir (em alguns serviços) um servidor Windows.
Outro exemplo foi a quebra da criptografia do DVD, que possibilitou a criação de DVD players para Linux, e mais importante do que isso (em termos legais) possibilitou a criação do formato DivX?, de compactação de DVDs? – o formato que é para os vídeos aquilo que o MP3 é para as músicas.
5.2 Sniffers e os Instant Messengers: Quebrando protocolos
A quebra de formatos proprietários de protocolos de comunicação normalmente se dá através do uso de sniffers. Sniffers são utilizados para capturar os pacotes de rede e analisá-los. Podem ser usados de forma maliciosa, para por exemplo obter
senhas que estiverem trafegando em sua rede ou através de sua placa de rede; ou para a engenharia reversa, para analisar o protocolo de algum software que não tenha código aberto.
Os protocolos de Instant Messengers como o Microsoft Messenger, AOL Messenger e Yahoo Messenger, são analisados desta forma, e a partir desta engenharia reversa puderam ser criados alguns clones para eles como o aMSN, GAIM, Miranda, e outros.
Alguns softwares de P2P também tiveram seus protocolos “reversed” e clones criados.
5.3 Wine e Windows API
A API (Application Programming Interface) do Windows é o conjunto de rotinas do kernel que são utilizadas pela interface gráfica. Para que fosse criado o Wine (emulador de Windows para Linux) foi necessário fazer a engenharia reversa da API do Windows para poder cloná-la e permitir que um software para Windows (que utiliza rotinas da Windows API) pudesse encontrar as rotinas equivalentes no Wine.
5.4 Portabilidade
Outro uso famoso da engenharia reversa é portar um programa que foi escrito para determinado processador para ser utilizado em outro tipo de processador.
Por exemplo, alguns videogames antigos tiveram seus jogos “Dumped” (copiados dos cartuchos através de hardware especial) e após fazer a engenharia reversa destes jogos (de acordo com a arquitetura correta da plataforma do videogame), estes jogos puderam ser portados e recompilados para uma outra arquitetura de máquina. Grande parte do mercado de emuladores de videogames antigos é baseada no dumping de softwares e emulação de arquiteturas.
6 Outras aplicações e áreas para a Engenharia Reversa
Algumas aplicações da engenharia reversa, legais ou não, além do escopo do software cracking.
6.1 A batalha Contra os Virus de Computador
A engenharia reversa é a principal técnica utilizada para examinar como os virus ou worms funcionam. Também é utilizada para simplesmente tentar identificar (através de heurísticas) se há conteúdo maléfico (vírus) em um software.
Através da descompilação de arquivos infectados, trojans ou worms, pode-se detectar seu comportamento, possíveis variações, e determinar assinaturas para reconhecimento destes arquivos maléficos. As empresas de anti-virus costumam ter equipes especializadas em receber arquivos infectados (dos usuários e colaboradores) e analisá-los para que na próxima versão (das assinaturas) do anti-virus haja a detecção do novo vírus.
Os vírus modernos utilizam as mesmas tecnologias de encriptação que os packers (ver item 3.3), e por isso a engenharia reversa pode utilizar para estudar um vírus as mesmas técnicas que usa para crackear um programa.
6.2 O Uso Governamental e Militar
A espionagem entre governos atinge também o mundo dos bits, e há investimentos pesados para reforçar a segurança dos sistemas governamentais.
Em 1989 ocorreu o primeiro caso de cyberespionagem a aparecer na mídia: hackers de um grupo alemão são presos por invadirem os computadores do governo americano e venderem informações a KGB soviética.
Em 1999 Bill Clinton anuncia US$ 1.46 bilhão para melhorar a segurança dos computadores do governo.
6.3 Auditoria de segurança
Instituições financeiras, que necessitam de uma total certeza sobre a segurança de seus dados, costumam fazer auditoria sobre os principais softwares que utilizam.
Quando o código fonte está disponível, este passa por uma auditoria de segurança, que vai avaliar a segurança ou riscos do software. Quando o código fonte não está disponível, cotuma-se utilizar a engenharia reversa para atestar a segurança e comportamento do software.
Em casos mais recentes, como de Phishing (tentativa de adquirir informação se passando por outra pessoa ou empresa), as empresas afetadas pelo golpe também utilizam da engenharia reversa para poder entender o funcionamento do backdoor, para poder criar mecanismos de defesa.
7 Copyrights e aspectos legais
7.1 O Digital Millennium Copyright Act e a quebra do DVD
O DMCA é uma lei americana que proibe (torna crime) a produção e disseminação de tecnologias que possam driblar medidas
tomadas para proteger copyright, e aumenta as penas para a quebra de copyrights na Internet. Não estamos falando da quebra do copyright em si, e sim da produção e disseminação de tecnologias ou conhecimento.
Um exemplo de quebra de formato proprietário foi a quebra do formato de encriptação do DVD. O DeCSS?, programa para decriptar DVDs?, foi escrito por um adolescente de 16 anos na Noruega, e por isso não estava sujeito as leis americanas (DMCA). No entanto, foi julgado por infração de copyright em seu próprio país, e o seu programa foi proibído de ser hospedado em websites americanos.
Os advogados do adolescente alegam que a decriptografia do DVD não foi para fazer cópias de filmes, e sim para poder criar um software que tocasse DVD no Linux, que até então não existia.
O DMCA também afeta a troca de informações sobre engenharia reversa, de modo que os fóruns sobre engenharia reversa (que até então falavam explícitamente sobre cracking) agora se escondem em fóruns privativos (onde só se consegue acesso com aprovação do moderador), ou então alguns poucos ainda públicos se limitam a falar genericamente sobre a engenharia reversa e não podem mencionar especificamente softwares sendo crackeados.
O grande problema da fronteira que protege a segurança dos copyrights é quando ela avança sobre a fronteira que garante nossa liberdade de conhecimento e de troca de informação (me refiro a informação técnica, não a propriedade intelectual), e nesse aspecto o DMCA avança muito invasivamente.
7.2 A Microsoft e o contra-ataque aos clones
Os fabricantes estão tentando proteger, com as armas que tem em mãos, seus formatos proprietários.
A Microsoft, como parte de sua iniciativa de abrir códigos fonte e protocolos até então secretos, disponibilizou a especificação do protocolo de compartilhamento CFIS. O CFIS é uma espécie de sucessor do atual protocolo de compartilhamento de arquivos e impressoras (atualmente clonado pelo Samba do Linux), mas agora com suporte a compartilhamento pela Web. A arma da Microsoft foi utilizar a licença da especificação do CFIS para proibir explicitamente o uso do protocolo e da especificação em projetos sob licença GPL .
O líder do projeto SAMBA afirma que a iniciativa da Microsoft foi um “ataque direto” a seu software.
7.3 Engenharia reversa como forma de evitar copyrights
A engenharia reversa é aceita legalmente como uma forma de se contornar os copyrights, através do “clean room design”.
Em 1981 a IBM entrou na área do computador pessoal com o seu IBM-PC. A BIOS das máquinas era código proprietário da IBM. Com o grande sucesso do IBM-PC, em 1982 a Compaq copiou o IBM-PC e produziu o primeiro PC “compatível”. De acordo com uma decisão judicial, a Compaq não poderia copiar diretamente a BIOS da IBM, mas poderia fazer a engenharia reversa desta, e então criar sua própria BIOS usando clean room design.
O Clean Room Design é um método que define que pode-se utilizar a engenharia reversa para entender o funcionamento de um software e cloná-lo, desde que o time que faça a codificação do clone tenha contato apenas com a especificação do sistema, feita pelo time que fez a engenharia reversa. Deste modo alguém que teve contato com o código original não pode participar do desenvolvimento direto do clone, apenas da especificação detalhada.
Foi a partir do Clean Room Design, e da iniciativa da Compaq, que surgiu a indústria dos clones de PC.
8 Conclusão
A atividade cracker é um assunto extremamente vasto, com vertentes muito distintas. Cada uma destas vertentes, é fruto de um processo de diferenciação de comunidades em outras comunidades com interesses mais específicos, seguida de outro processo de amadurecimento do conhecimento sobre estes interesses em comum.
Assim como o Software Livre, é difícil de se fazer análises sobre o que leva as pessoas a ela, e provavelmente há tantas razões quanto pessoas envolvidas. No entanto, podemos perceber que apesar de ser muito diferente do SL no aspecto da legalidade, a atividade cracker compartilha com o SL o mesmo ímpeto de desvendar o funcionamento da máquina e de seus softwares, através de profunda compreensão e domínio.
Temos visto ultimamente algumas tentativas de incriminar não só as atividades crackers que efetivamente causaram prejuízos, mas também as atividades que simplesmente estão contribuindo para o avanço do conhecimento do homem sobre o software, engenharia reversa, criptografia, etc. Isto é uma atitude totalmente protecionista, e até insensata, pois não é a partir da ignorância, de sermos proibidos de ter acesso a informação, que virá a segurança. Pelo contrário – a única forma da segurança existir é se a informação se tornar totalmente aberta, estudada, discutida, e aperfeiçoada.
9 Bibliografia
Autores: Ricardo Drizin e Ulisses Buonanni