Skip to main content
Introducao a engenharia reversa

Engenharia Reversa de Software – Introdução

O que é engenharia reversa?

Antes de começar a engenharia reversa precisamos saber o que isso significa, segundo um artigo na Wikipédia  engenharia reversa é o processo de descobrir os princípios tecnológicos e o funcionamento de um dispositivo, objeto ou sistema, através da análise de sua estrutura, função e operação. Objetivamente a engenharia reversa consiste em, por exemplo, desmontar uma máquina para descobrir como ela funciona. É objeto de estudo em universidades e faculdades principalmente ligada à área de tecnologia.

Engenharia reversa de software

Se tratando de softwares, a engenharia reversa também é chamada de cracking (que na tradução direta quer dizer rachadura). O cracking em softwares comerciais é considerado ilegal, por esse motivo são criados softwares especiais para teste de segurança que são chamados de crack-me’s.

Muitos softwares comerciais possuem versões de teste, que normalmente vem com algumas limitações. Entre as principais limitações que o cracking visa quebrar são:

Numero de série

Uma das proteções mais comuns de se encontrar, em que o software se libera após a introdução de uma senha que pode ser fixa ou variável, este ultima pode ser gerado através de nomes de usuário, nome do PC, número de série do HD ou mesmo aleatoriamente.

Tempo de uso limitado (Trial)

Também é um tipo de proteção bastante comum, normalmente é dado um período para experimentar o software e após esse período o mesmo para de funcionar caso não seja registrado.

Quantidade de execuções limitadas

O software para de funcionar assim que seja atingido determinado numero de execuções e só volta a funcionar depois de registrado.

Funções desabilitadas

Algumas funções importantes são desativadas (como botões ou menus) até que o programa seja registrado.

Verificação de CD

Proteção muito utilizada por jogos, em que é pedido para introduzir o CD do mesmo, a fim de verificar sua autenticidade.

Mensagem que incomoda (Nag-Screen)

Também é muito fácil de encontrar, são janelas que aparecem geralmente no inicio ou no final da execução do software ou em alguma ação do usuário, que informa que o software não está registrado. Desaparecem após o registro.

Arquivos-senha (Key-File)

Proteção que pede um arquivo com conteúdo correto para que o programa seja liberado.

Proteção anti-cracking

Proteção que detecta e proíbe o uso de ferramentas de análise ou de edição sobre o software, afim de não deixar que o mesmo seja crackeado.

Executável comprimido ou encriptado

Proteção que diminui o tamanho do software ou ofusca seu código, para que o mesmo não consiga ser analisado.

O que é necessário para iniciar a engenharia reversa?

  • Ter força de vontade e determinação para aprender, além de tempo é
    claro.
  • Ter conhecimento de Software e Hardware.
  • Ter conhecimento básico em assembly.
  • Conhecer outras linguagens de programação.

Etapas da engenharia reversa

Para a prática da engenharia reversa de software é seguida algumas sequencias:

Análise dinâmica de software

Procura-se executar o software e monitorar todo o seu comportamento, devemos ficar atendo a qualquer dica que o software possa nos dar, como uma nag screen, botões desabilitados, mensagens de demo, trial e mensagens de erro ao atentar ativar o software.

Debugging

Com as informações da análise dinâmica o software é executado dentro um debugger, temos que procurar pelas dicas de o software nos deu e descobrir o que as rotinas fazem.

Aplicando o patch

Com as rotinas descobertas é necessário fazer as modificações para alcançar o resultado esperado e salvar o software modificado.

Avaliação dos resultados

É executado o software modificado e avaliado o resultado final, a fim de se achar algum defeito ou erro (bug).

Sombrakey

Entusiasta em engenharia reversa de software, sempre querendo aprender mais.