Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Às vezes, os engenheiros precisam pensar ao contrário para analisar um produto. Por exemplo, um engenheiro mecânico pode tirar conclusões sobre a produção de um produto com base em seu design e propriedades físicas. Eles podem até ser capazes de produzir o mesmo produto se tiverem um conhecimento completo dele.

Você também pode comparar a engenharia reversa às provas de equações matemáticas. Então, como a engenharia reversa é usada?

O que é Engenharia Reversa?

A engenharia reversa é o processo de análise de um sistema com a finalidade de reproduzi-lo ou melhorá-lo. Se você observar as áreas de trabalho da engenharia reversa, verá que pode usá-la para muitos propósitos diferentes. Se você olhar do ponto de vista da segurança cibernética, é possível realizar as seguintes operações com métodos de engenharia reversa:

  • Análise de fonte de software não-aberto
  • Análise de vulnerabilidade
  • Análise de malware
  • Cracking e Patching

Você pode ver a engenharia reversa usada até mesmo em jogos de computador hoje em dia. Por exemplo, os desenvolvedores costumam criar mods de software usando métodos de engenharia reversa.

No campo da engenharia reversa, existem dois métodos de análise diferentes: estático e dinâmico. Você executa a análise estática quando analisa um programa sem realmente executá-lo. Um método de análise dinâmica, por outro lado, requer que você execute o programa para observar seu comportamento e os dados que ele usa.

Mas antes de realizar a análise para engenharia reversa, existem alguns termos importantes que você precisa saber sobre como funciona a arquitetura do computador.

Principais Partes da Arquitetura de Computadores

A engenharia reversa é praticamente impossível, a menos que você entenda a arquitetura do computador. Você precisa estudar as quatro partes principais:

  • Entrada: Um conjunto de métodos para inserir dados.
  • CPU: A CPU processa os dados recebidos e os transmite aos seus proprietários. É a unidade central de processamento.
  • Memória: O espaço que contém dados temporariamente durante o processamento.
  • Saída: o resultado que o usuário final vê.

Você pode manter todos esses problemas principais em mente com um exemplo, como quando você pressiona a letra A no teclado. Ao pressioná-lo, ocorre um evento de entrada. Após esta etapa, a CPU processa os dados e utiliza um pequeno espaço na memória para armazená-los. Por fim, você verá a letra A em sua tela, finalizando o processo com a saída.

Mergulhe nas profundezas da CPU

Se você realmente quer se tornar um especialista em engenharia reversa e se aprofundar nesse assunto, você precisa ter um conhecimento detalhado de hardware, linguagens de baixo nível e, principalmente, de CPU. Os principais tópicos que você precisa saber sobre a CPU são:

  1. Unidade de controle: Este é responsável pelo processamento de dados na CPU e sua transferência para os campos relevantes. Você pode pensar nesta unidade como um mecanismo de controle de roteamento.
  2. ULA: Significa Unidade Lógica Aritmética. É aqui que algumas operações aritméticas e lógicas ocorrem. Se você se aprofundar na matemática, verá que as quatro operações básicas são essencialmente variações da adição. Portanto, a ALU é baseada na agregação. Por exemplo, subtrair dois de três é o mesmo que somar menos dois a três.
  3. Registros: Estas são as áreas dentro da CPU que armazenam os dados processados. Existem diferentes tipos de registradores, assim como existem diferentes tipos de variáveis ​​em uma linguagem de programação. Um registrador é responsável por manter o tipo e os atributos dos dados atribuídos a ele.
  4. Sinais: Se você deseja que a CPU execute várias operações diferentes ao mesmo tempo, é necessário algum método para organizá-las. Os elementos que fazem isso são chamados de sinais. Cada transação age de acordo com sinais que garantem que ela não interfira em outro processo.
  5. Ônibus: O caminho usado pelos dados para mover de uma unidade para outra. Observe como o nome sugere transporte.

Conceitos que você ouvirá com frequência na engenharia reversa

Entender como a CPU processa os dados e os armazena na memória, juntamente com o conceito de registradores, pode ser muito útil na engenharia reversa. Em particular, você pode usar o diagrama abaixo para entender melhor o conceito de memória:

Finalmente, para análise de engenharia reversa, você precisa conhecer alguns conceitos básicos sobre registradores. Eles são um dos tópicos em que você mais se concentrará. Aqui estão algumas explicações sobre dados, ponteiros e registradores de índice que serão úteis para você da maneira mais concisa:

  • 1. EAX: Significa Registro do Acumulador. Geralmente salva dados que se enquadram na categoria de operações aritméticas aqui.
  • 2. EBX: Significa Base Cadastral. Ele desempenha um papel no endereçamento indireto.
  • 3. EDX: Significa Data Register. EDX ajuda outros registradores.
  • 4. EIP: Significa ponteiro de instrução. Contém o endereço do domínio a ser executado.
  • 5. ESP: Contém o endereço base.
  • 6. ESI: Contém as informações do índice de origem.
  • 7. EDI: Mantém as informações do índice de destino.

Você deve pesquisar todos eles separadamente para entender suas nuances. Mas se você observar o básico e tentar entender a lógica de negócios, não importa com qual arquitetura de processador você esteja trabalhando, a análise de código para engenharia reversa será bastante fácil.

A engenharia reversa geralmente começa com o código de máquina. Você pode entender muitos dos termos acima se estiver familiarizado com montagem ou tiver um comando de Arquiteturas de processador de 32 ou 64 bits. Se você quiser aprender a montagem desde o início, será extremamente útil na engenharia reversa.

O que você vai fazer com tudo isso?

Se você tiver um bom conhecimento de engenharia reversa, poderá fazer análise de código independentemente do sistema operacional ou da arquitetura de processador com a qual estiver trabalhando. Por exemplo, é possível encontrar versões crackeadas de muitos programas ou jogos de computador. Este é um método completamente ilegal.

No entanto, se você for um profissional ético de segurança cibernética, precisará usar engenharia reversa para entender por que esses programas invadidos estão sendo invadidos. Se você deseja avançar na engenharia reversa ou está apenas começando, seria uma boa escolha tentar aprender sobre a relação entre hardware e código de máquina.