Em informática, existem os programas de código fonte aberto e os de código fonte fechado. Com os de código aberto é possível alterar o programa diretamente modificando seu código fonte, que é acessível a todos, bastando consultá-lo. Com os de código fechado, o único caminho é utilizar a engenharia reversa, ou seja, pegar o executável do programa e abri-lo num editor hexadecimal, ou utilizar um disassemblador, ou ainda analisar seu código com o auxílio de um debugger (programa inicialmente criado para descobrir erros em tempo de execução). Um editor hexadecimal permite visualizar o conteúdo de qualquer arquivo de duas formas básicas: de um lado geralmente temos valores numéricos hexadecimais e do outro caracteres alfa-numéricos (letras e números, normalmente usando a codificação ASCII), legíveis por nós humanos.
Abaixo, podemos ver um típico editor hexadecimal: o tiny hexer. À esquerda, temos a representação do código binário de um arquivo executável, convertido em código hexadecimal. O código é organizado em 8 grupos de 4 algarismos. Cada dois algarismos representam um caracter legível - ou nem tanto - na coluna da direita. A assinatura "MZ" está presente no início de todo arquivo executável.
E na figura abaixo, a confirmação de que se trata de um executável ("PE" significa "portable executable"):
É pela tradução dos valores hexadecimais em palavras e números que podemos alterar o código, de acordo com nossas necessidades ou conveniências. Mas para isso, é preciso conhecer a estrutura do arquivo e as partes que podem ser alteradas. Já o disassembler, traduz o conteúdo de um executável (no Windows são arquivos com as extensões .exe, .ocx, .dll e no linux, são os arquivos elf) em comandos escritos na linguagem Assembly.
Abaixo, um famoso debugger (o Ollydebugger), onde podemos ver em vermelho os comandos em linguagem assembly e, em verde, a representação em hexadecimal para um dado endereço do código:
A linguagem Assembly, uma das mais antigas, é a linguagem que fala diretamente com o processador, pois para cada instrução que o processador executa, existe um comando correspondente em Assembly. Ora, tendo noções de Assembly, qualquer um pode modificar o comportamento ou as funções de um programa. Entender Assembly também permite, é claro, ter uma noção mais aprofundada de como o processador funciona, em termos do que ele é capaz de fazer, executar. Até aqui tudo bem, se não fossem as leis de direitos autorais. Em muitos países (incluindo o nosso), modificar ou distribuir programas proprietários alterados é crime. São os chamados programas piratas. E os programas comerciais assim alterados, com a proteção anti-cópia devidamente quebrada, são chamados de "crackeados" (do inglês crack = quebrar). O "crack", dispositivo ou meio para se piratear um programa pode ocorrer de várias formas, sendo que a mais simples é um número usado para se registrar ou desbloquear um programa, são as famosas seriais ou números seriais (serials, em inglês) . Há também as keygens (abreviatura de keygenerators= geradores de senhas), os patches (do inglês patch= retalho, remendo) que são programas que alteram o código original do programa, desbloqueando as restrições que porventura ele possa ter (tempo limite de uso, funções não liberadas, telas de aviso dizendo que o uso do programa é só para fins de avaliação etc.), ou seja, fazem verdadeiros "remendos". Um tipo especial de patch são os loaders (carregadores), que fazem o remendo apenas na imagem do executável na memória, não alterando o executável em disco. Isso porque muitos executáveis têm um mecanismo que verifica a integridade do arquivo, ou seja, se ele foi alterado ou corrompido. Isso geralmente é feito através de checksums (soma dos bytes no código do arquivo). Existem vários tipos de checksums, como CRC, MD5, SHA-1, SHA-256, etc., sendo que as duas primeiras são as mais fracas, podendo em raros casos induzir a erros. Mas, voltando ao assunto, se é ilegal piratear um programa, então por que existe tanta pirataria? São vários os motivos: primeiro, quando surgiram os primeiros computadores, não era ilegal copiar e distribuir livremente os programas; essa restrição só surgiu depois, quando começaram a apareceram as grandes empresas especializadas na produção de softwares e as leis de direitos autorais foram alteradas para proteger esse novo tipo de indústria que surgia; segundo, os próprios programas comerciais se beneficiam da pirataria, na medida em que ela ajuda mais e mais pessoas a tomar conhecimento com esses programas, colaborando na divulgação de suas qualidades, facilidades e funcionalidades, permitindo o acesso de grande número de usuários que tornarão esses softwares em verdadeiras referências em seus nichos de mercado; terceiro, o gosto pelo proibido, pelo poder de sentir o controle em suas mãos - alterar o código de um programa significa que você tem conhecimento para tal; quarto, a indústria da pirataria é evidentemente lucrativa - muitas pessoas vivem da venda de cds ou dvds piratas e o crime organizado às vezes a usa como forma de lavagem de dinheiro; quinto, conforme citado no livro Software Piracy Exposed, os "crackers" de software geralmente se organizam em grupos, onde o reconhecimento que eles têm em seus clãs é o que mais os incentiva a continuarem - é como se fossem os heróis de seus grupos. Há, entretanto, os crackers de sistemas bancários e cartões de crédito, mas a área de atuação dessas pessoas é claramente criminosa. Nada impede que um expert em informática se torne um criminoso, mas a grande motivação que certamente move os grandes mestres da engenharia reversa é a busca pelo conhecimento, pelo poder que a sabedoria faz sentir nas pessoas que a adquirem. Geralmente uma pessoa interessada em crackear programas não vai se interessar por sistemas bancários. Entretanto, isso não é impossível, já que dinheiro fácil pode seduzir facilmente uma pessoa com valores morais fracos; ou seja, em certos casos, a ocasião faz o ladrão. Bons tempos aqueles em que a engenharia reversa era vista como uma causa nobre, como forma de viabilizar o acesso de mais e mais pessoas a programas absurdamente caros. Hoje em dia deve-se ter muito cuidado ao adquirir programas piratas, seja via camelô, ou baixando da internet, porque keygens, patches e programas pré-crackeados com instalador modificado podem, evidentemente, conter vírus, cavalos de tróia, keyloggers (programas que geralmente interceptam as teclas digitadas no teclado e as enviam a malfeitores à procura de senhas bancárias) e até mesmo screenloggers (gravam a tela do computador em forma de arquivos de imagem ou video e as mandam via internet para algum criminoso em busca de dados bancários). A engenharia reversa é tolerada para fins de aprendizagem, mas se você utilizar os conhecimentos adquiridos para usar ou distribuir programas comerciais com suas proteções anti-pirataria devidamente quebradas, você se tornará um criminoso, de acordo com as leis de direitos autorais. É claro que essas leis são extremamente absurdas, porque há muita diferença entre uma pessoa que usa um programa pirata em seu computador e um indivíduo que rouba senhas bancárias, por exemplo. Quem faz o crack e quem distribui o programa crackeado também não devia ser visto pela lei como sendo tão vilão assim, visto que permitem a muita gente usar programas caríssimos que, de outra forma, não poderiam ser adquiridos. Não estou, com isso, incentivando e apoiando a pirataria; muito pelo contrário, estou apenas mostrando o outro lado da moeda que geralmente não se fala na mídia. Além disso, se existe um programa de código fonte livre e outro, proprietário, dê preferência ao de código livre, porque mesmo que ele seja muito diferente do programa comercial e leve um tempo para aprendermos a usá-lo, pelo menos não estaremos incentivando a pirataria e estaremos dando força e ampliando o número de usuários que usam soluções livres; se puder, seja radical: troque seu Windows por uma distribuição Linux; se não puder, comece a visitar hoje mesmo o site http://sourceforge.net/ e a buscar programas abertos para realizar as atividades do seu dia-a-dia; troque o Outlook ou o Windows Mail pelo Mozilla Thunderbird; troque o Internet Explorer pelo Mozilla Firefox; troque o Messenger pelo Miranda ou pelo Pidgin; enfim, comece a desfrutar e a conhecer o que de bom o código aberto tem a te oferecer. É claro que, em certos casos, não há programas abertos que preencham todas as nossas necessidades. Neste caso, procure programas gratuitos (freewares); só em último caso ceda à tentação da pirataria - ou não ceda, compre o programa e incentive seus desenvolvedores. É verdade que se todos os programas fossem livres, não haveria pirataria; portanto, prestigie o software livre. Mas se as grandes empresas de software quisessem realmente acabar com a pirataria, não venderiam softwares tão caros; se quisessem mesmo acabar com a pirataria, venderiam a pouco mais que o preço de um dvd-r, por exemplo. Quem passaria horas e horas baixando um programa que custa pouco mais que o preço de uma mídia virgem? Bastaria abrir mão dos lucros milionários; ou implementar um novo modelo de negócios baseado no suporte bem feito ao usuário; em oferecer o programa sob a forma de um serviço, sei lá. E por fim - pelo menos por enquanto, é importante lembrar que um dos usos atuais mais nobres da engenharia reversa é a análise de vírus, trojans e outras pragas digitais, das quais não se dispõe do código fonte, evidentemente. É graças à engenharia reversa que são feitas as assinaturas de vírus, padrões que permitem identificar se um arquivo é nocivo ou não. Portanto, a engenharia reversa não é uma vilã em si. A engenharia reversa, assim como todo tipo de conhecimento ou poder, depende do uso que as pessoas fazem dela - e de como a utilizam. Só para não passar em branco, há também a engenharia reversa de produtos industriais, mas aí já é outra história...
P.s.: Foi-se o tempo em que a engenharia reversa tinha como principal uso quebrar a proteção de programas comerciais para possibilitar o acesso aos usuários que não poderiam ou não queriam pagar pelos programas. Isso foi na época "romântica" da internet, quando ainda se amarrava cachorro com linguiça. Hoje, a maioria dos crackers quer mesmo é ficar rica, emprestando seu talento a organizações criminosas que roubam dados bancários das pessoas, invadem contas de e-mail, do facebook etc. Todo cuidado é pouco ao baixar da internet keygens, ativadores e outros tipos de crack.
P.s.: Foi-se o tempo em que a engenharia reversa tinha como principal uso quebrar a proteção de programas comerciais para possibilitar o acesso aos usuários que não poderiam ou não queriam pagar pelos programas. Isso foi na época "romântica" da internet, quando ainda se amarrava cachorro com linguiça. Hoje, a maioria dos crackers quer mesmo é ficar rica, emprestando seu talento a organizações criminosas que roubam dados bancários das pessoas, invadem contas de e-mail, do facebook etc. Todo cuidado é pouco ao baixar da internet keygens, ativadores e outros tipos de crack.
Nenhum comentário:
Postar um comentário
Todos os comentários serão analisados antes da publicação para evitar spam.