Engenharia reversa
ENGENHARIA REVERSA
UFF – Universidade Federal Fluminense Graduação em Ciência da Computação Informática I – 2005/2
Antonio Jorge Sapage da Canhota Junior Diego Alves de Souza Diogo dos Santos Moutinho Felipe Paixão Lohnefink
1
Engenharia Reversa
2
Engenharia Reversa
Índice
1. Introduçao Por que a engenharia reversa na informática? Exemplos de engenharia reversa Reengenharia Definição de engenharia reversa de software 2. Técnicas de engenharia reversa sem código-fonte 3. Técnicas de engenharia reversa com código-fonte Extração dos fatos Tratamento dos fatos 4. Aspectos Legais Leis e acordos Casos famosos 5. Bibliografia
4 4 5 6 7 7 8 8 9 12 12 13 14
3
Engenharia Reversa
1. INTRODUÇÃO
A Engenharia Reversa é uma atividade que trabalha com um produto existente (um software, uma peça mecânica, uma placa de computador, etc.) tentando entender como este produto funciona, o que ele faz exatamente e como ele se comporta em todas as circunstâncias. Fazemos engenharia reversa quando queremos trocar, modificar uma peça (ou um software) por outro, com as mesmas características ou entender como esta funciona e não temos acesso a sua documentação. Por exemplo, numa fábrica, uma bomba falhou e tem que ser trocada por uma nova. A bomba foi instalada há 25 anos e as pessoas que fizeram o trabalho se aposentaram há muito tempo. A empresa que vendia essas bombas faliu. A fábrica tem que achar uma nova bomba, com exatamente as mesmas características, ou seja, ela tem que ser montada sobre a tubulação existente (dimensões definidas, como a bomba está fixada, volume ocupado pela bomba, etc.) que são características fáceis de descobrir, mas podem também existir outras menos evidentes (a bomba tem que fornecer um débito definido, ela precisa respeitar algumas restrições desconhecidas). Todas essas características da bomba podem ser importante ou não, a fábrica tem que descobrir isso antes de comprar uma nova.
Por que a