ENGENHARIA REVERSA


O que é a Engenharia Reversa
Como o próprio nome indica, a Engenharia Reversa é uma engenharia "ao contrário", portanto, é uma atividade que trabalha com um produto existente (um software, uma peça mecânica, uma placa de computador, etc.) e tenta entender como este produto funciona e o que ele faz exatamente (todas as suas propriedades em quaisquer circunstâncias). Fazemos engenharia reversa quando queremos trocar ou modificar uma peça (ou um software) por outro, com as mesmas características, mas não temos todas as informações sobre essa peça.
Utilizando mecanismos de busca na Internet como Google, Altavista, Lycos, etc, as referências sobre Engenharia Reversa são surpreendentemente abundantes. Encontra-se desde programas de cursos universitários até ensaios e teses, além dos tradicionais sites "relâmpago" (hoje está no ar, amanhã foi banido do ISP) dos crackers de plantão.
Porque aprender Engenharia Reversa
Crackers são os que aplicam conhecimentos de engenharia reversa para "liberar" programas que exijam algum tipo de registro ou para habilitar funções que estejam bloqueadas em demos, trials, etc. É natural que os autores de software queiram proteger seus programas e o fazem razoavelmente bem... até encontrar um cracker que se dispõe a "liberá-los". O que os programadores esquecem é que precisam se interessar pela engenharia reversa, dando uma atenção especial à programação de segurança. Se você não conhece o inimigo, como é que pretende se defender ?
Aprenda as técnicas utilizadas pelos estudiosos da matéria e pelos crackers mais famosos e aplique seus conhecimentos (não existe proteção 100%, mas 99% já é um bom resultado) - ou então parta para o software livre e não pense mais no assunto !
Como aprender Engenharia Reversa
Como foi dito acima, existem muitos sites dedicados ao assunto, basta dar uma olhada no Google. Encontra-se desde conceitos básicos até cursos na web (geralmente em inglês, como Hellforge) e tutoriais de crackers com exemplos muito elucidativos. De qualquer modo, é necessário um conhecimento básico da linguagem assembly além de um domínio razoável de uma outra linguagem de programação (preferencialmente C/C++). Se você programa para Windows rodando em processadores Intel, é claro que também é necessário um conhecimento básico das API do Windows, da arquitetura Intel e do conjunto de instruções desses processadores. O mesmo se aplica para a família Unix/Linux, Sparc, etc. Além disso, entre outras coisas, procure se informar ao máximo sobre padrões: comece com os padrões de PE (portable executable), compactação, encriptação de arquivos e instaladores.
Obrigado pelo seu comentário

Postagens Relacionadas

Related Posts Plugin for WordPress, Blogger...

Programador GB