Prévia do material em texto
Engenharia Reversa A engenharia reversa ou engenharia reversa é o processo realizado com o objetivo de obter informações ou um projeto de um produto para determinar seus componentes e como eles interagem e qual foi o processo de fabricação. Atualmente (início do século 21), os produtos de engenharia reversam mais comumente são programas de computador e componentes eletrônicos, mas na verdade qualquer produto pode sofrer engenharia reversa. O método tem esse nome porque se move na direção oposta das tarefas comuns de engenharia, que consistem no uso de dados técnicos para produzir um determinado produto. Em geral, se o produto ou outro material que foi submetido à engenharia reversa foi obtido corretamente, o processo é legítimo e legal. Da mesma forma, produtos genéricos criados a partir de informações obtidas na engenharia reversa podem ser fabricados e distribuídos legalmente, como é o caso de alguns projetos de software livre amplamente conhecidos. O programa Samba é um exemplo claro de engenharia reversa, pois permite que os sistemas operacionais UNIX compartilhem arquivos com os sistemas Microsoft Windows. O projeto Samba teve que investigar informações confidenciais (não divulgadas ao público em geral pela Microsoft) sobre aspectos técnicos relacionados ao sistema de arquivos do Windows. O projeto WINE faz o mesmo para o conjunto de API do Windows e OpenOffice.org com os próprios formatos do Microsoft Office, ou é feito para entender a estrutura do sistema de arquivos NTFS e, assim, ser capaz de desenvolver drivers para leitura e escrita nele (principalmente para sistemas baseados em GNU / Linux). A engenharia reversa é um método de resolução. Aplicar a engenharia reversa a algo significa aprofundar no estudo de seu funcionamento, a ponto de podermos entender, modificar e aprimorar esse modo de operação. Mas esse termo não se aplica apenas a software, mas o estudo de todos os tipos de elementos (por exemplo, equipamentos eletrônicos, microcontroladores ou objetos de fabricação de qualquer tipo) também é considerado engenharia reversa. E m vez disso, diríamos que a engenharia reversa é anterior ao nascimento do software, sendo uma possibilidade disponível para as empresas para a produção de bens, copiando desde o próprio surgimento da engenharia. No caso específico do software, a engenharia reversa é conhecida como a atividade que trata de descobrir como funciona um programa, função ou característica cujo código-fonte não está disponível, a ponto de poder modificar esse código ou gerar seu próprio código que cumpra as mesmas funções. A grande maioria dos softwares pagos inclui em sua licença uma proibição expressa de engenharia reversa de seu código, na tentativa de evitar que seu código seja modificado e, portanto, os usuários tenham que pagar se quiserem usá-lo. A engenharia reversa nasceu durante a Segunda Guerra Mundial, quando os exércitos inimigos apreenderam suprimentos de guerra, como aviões ou outras máquinas de guerra para melhorar os seus próprios por meio de análises exaustivas. A figura a seguir mostra os processos que a engenharia direta segue, se seguirmos esse caminho "para trás" (ou ao contrário), faremos a engenharia reversa, se continuarmos com o caminho e propormos mudanças (ou melhorias), à direita, esse caminho nos leva à reengenharia, se não alterarmos o conteúdo dos modelos obtidos durante os processos de engenharia reversa e seguirmos o caminho da esquerda, que se chama desenvolvimento de uma cópia.