O que é engenharia reversa?

O que é engenharia reversa?
Entenda O que é engenharia reversa? e ganhe mais conhecimento com nossos saiba mais.

Compartilhe esse post

Engenharia reversa é, em sua essência, o processo de desmontar algo para entender como funciona, com o objetivo de reproduzir ou melhorar o objeto, sistema ou dispositivo. Esta técnica é como um quebra-cabeça intrigante para engenheiros e programadores, onde cada peça desvendada pode revelar segredos de funcionamento e inovação.

Descubra O que é engenharia reversa?

Imagine ter em mãos um dispositivo eletrônico sem acesso ao seu projeto original. A engenharia reversa permite desvendar a magia por trás da caixa-preta, compreendendo cada componente e seu papel no conjunto. Assim, ao analisar peça por peça, circuito por circuito, cria-se um mapa detalhado que não apenas explica o funcionamento do dispositivo mas também abre portas para aperfeiçoamentos e adaptações.

Em território brasileiro, essa prática ganha contornos legais e éticos específicos, pois respeita as leis de propriedade intelectual vigentes. No entanto, a engenharia reversa não é apenas sobre replicar; ela é um pilar para a inovação e desenvolvimento tecnológico, servindo como ferramenta de aprendizado e base para a criação de novas tecnologias que atendem às demandas e especificidades do mercado local e global.

Espero que, ao desvendar o conceito aqui apresentado, você se sinta como um explorador decifrando os segredos da tecnologia. E note que, ao compreender a engenharia reversa, estamos na verdade aprendendo a linguagem com a qual o futuro é construído.

Muitas coisas podem sofrer engenharia reversa, incluindo software, máquinas físicas, tecnologia militar e até funções biológicas relacionadas ao funcionamento dos genes.

A prática de engenharia reversa aplicada a hardware e software de computador é retirada de indústrias mais antigas. A engenharia reversa de software concentra-se no código de máquina de um programa – a sequência de 0s e 1s que é enviada ao processador lógico. Instruções de linguagem de programa são usadas para transformar o código de máquina novamente no código-fonte original.

O que é engenharia reversa?


Dependendo da tecnologia, o conhecimento adquirido durante a engenharia reversa pode ser usado para reaproveitar objetos obsoletos, fazer uma análise de segurança, obter uma vantagem competitiva ou simplesmente ensinar alguém sobre como algo funciona. Não importa como o conhecimento é usado ou a que se refere, a engenharia reversa é o processo de obtenção desse conhecimento a partir de um objeto acabado.

Qual é o propósito da engenharia reversa?
O objetivo da engenharia reversa é descobrir como funciona um objeto ou sistema. Existem vários motivos para fazer isso. A engenharia reversa pode ser usada para aprender como algo funciona e para recriar o objeto ou para criar um objeto semelhante com melhorias adicionais.

Freqüentemente, o objetivo da engenharia reversa de software ou hardware é encontrar uma maneira de criar um produto semelhante de maneira mais barata ou porque o produto original não está mais disponível. A engenharia reversa em tecnologia da informação também é usada para resolver problemas de compatibilidade e fazer o hardware ou software funcionar com outro hardware, software ou sistema operacional com o qual não era originalmente compatível.

O software Logic Pro da Apple, que permite aos músicos compor, gravar, arranjar, editar e mixar músicas, é um bom exemplo. O Logic Pro está disponível apenas para dispositivos Mac e é relativamente caro. O programa possui vários instrumentos digitais proprietários. Com um pouco de investigação, um programador poderia fazer engenharia reversa desses instrumentos digitais, descobrir como eles funcionam e personalizá-los para uso no Logic Pro ou torná-los interoperáveis com outro software de música compatível com Windows.

Como funciona o processo de engenharia reversa?
O processo de engenharia reversa é específico do objeto no qual está sendo executado. Contudo, independentemente do contexto, existem três passos gerais comuns a todos os esforços de engenharia inversa. Eles incluem:

Extração de informações. O objeto que está sendo submetido à engenharia reversa é estudado, informações sobre seu design são extraídas e essas informações são examinadas para determinar como as peças se encaixam. Na engenharia reversa de software, isso pode exigir a coleta de código-fonte e documentos de design relacionados para estudo. Também pode envolver o uso de ferramentas, como um desmontador, para desmembrar o programa em suas partes constituintes.
Modelagem. As informações coletadas são abstraídas em um modelo conceitual, com cada parte do modelo explicando sua função na estrutura geral. O objetivo desta etapa é pegar informações específicas do original e abstraí-las em um modelo geral que possa ser usado para orientar o projeto de novos objetos ou sistemas. Na engenharia reversa de software, isso pode assumir a forma de um diagrama de fluxo de dados ou de um gráfico de estrutura.
Análise. Isto envolve revisar o modelo e testá-lo em vários cenários para garantir que seja uma abstração realista do objeto ou sistema original. Na engenharia de software, isso pode assumir a forma de testes de software. Uma vez testado, o modelo pode ser implementado para reengenharia do objeto original.

A engenharia reversa de software envolve o uso de diversas ferramentas. Uma ferramenta é um dumper hexadecimal, que imprime ou exibe os números binários de um programa em hexadecimal. Ao conhecer os padrões de bits que representam as instruções do processador, bem como os comprimentos das instruções, a engenharia reversa pode identificar partes de um programa para ver como funcionam.

O que é engenharia reversa?


Outra ferramenta de engenharia reversa de software é o desmontador. Ele lê o código binário e exibe cada instrução executável como texto. Um desmontador não pode dizer a diferença entre uma instrução executável e os dados que o programa usa; portanto, um depurador é usado para evitar que o desmontador desmonte as partes de dados de um programa. Essas ferramentas podem ser usadas por um cracker de computador e obter acesso a um sistema de computador ou causar outros danos.

O projeto auxiliado por computador (CAD) é uma técnica de engenharia reversa usada para recriar uma peça fabricada quando o projeto original não está mais disponível. Envolve a produção de imagens 3D da peça para que ela possa ser remanufaturada. Uma máquina de medição por coordenadas mede a peça e, à medida que ela é medida, uma imagem 3D da estrutura de arame é gerada usando software CAD e exibida em um monitor. Após a conclusão da medição, a imagem da estrutura de arame é dimensionada. Qualquer peça pode sofrer engenharia reversa usando esses métodos.

Exemplos de engenharia reversa

A engenharia reversa varia dependendo de onde está sendo aplicada e do propósito da engenharia reversa da tecnologia. Exemplos comuns incluem:

Programas

Existem vários casos em que a engenharia reversa é usada para desmontar software. Um exemplo comum é adaptar um programa escrito para uso com um microprocessador para outro. Outros exemplos incluem a reconstrução de código-fonte perdido, o estudo de como um programa executa determinadas operações, a melhoria do desempenho e a correção de bugs ou a correção de erros quando o código-fonte não está disponível.

Um exemplo é a Phoenix, uma empresa de software dos EUA que criou software de sistema básico de entrada/saída (BIOS), que era compatível com a versão proprietária da IBM. Para fazer isso, a Phoenix fez engenharia reversa da versão IBM de uma forma que a protegesse de cobranças de direitos autorais, registrando as etapas seguidas e não fazendo referência ao código proprietário.

O malware é outra área onde a engenharia reversa de software é usada. Os agentes de ameaças costumam usar ofuscação de código de software para impedir que seu código malicioso seja descoberto ou compreendido. Os proprietários de software ou sistemas infectados podem usar engenharia reversa para identificar conteúdo malicioso, como vírus. A Agência de Inteligência de Defesa dos EUA disse que pretende usar essas técnicas para fazer engenharia reversa de malware inimigo para criar suas próprias armas cibernéticas ofensivas. Estão disponíveis ferramentas para auxiliar na engenharia reversa de malware, como o software Ghidra da Agência de Segurança Nacional, que é usado para fazer engenharia reversa do malware WannaCry, por exemplo.

Peças de computador

Se um fabricante de processadores quiser ver como funciona o processador de um concorrente, ele pode comprar o processador de um concorrente, fazer engenharia reversa e então usar o que aprender para fabricar seu próprio processador. Este processo é ilegal em muitos países, requer muita experiência e é caro. A engenharia reversa é frequentemente usada para criar peças de reposição quando as peças originais de equipamentos legados não estão mais disponíveis. A engenharia reversa de peças de computador também é feita para aumentar a segurança. Por exemplo, o Project Zero do Google identificou vulnerabilidades em microprocessadores usando engenharia reversa.

Avaliações de segurança de rede

As empresas que realizam avaliações de segurança de rede também usam a engenharia reversa como uma de suas ferramentas. Eles dividem seu grupo de segurança em duas equipes. Uma equipe simula ataques e a outra equipe monitora a rede e faz engenharia reversa dos ataques da outra equipe. As informações obtidas com esses ataques simulados são usadas para fortalecer a rede corporativa.

Desafios legais e éticos com engenharia reversa

Nos EUA, a engenharia reversa é geralmente considerada uma forma legal de aprender sobre um produto, desde que a versão original seja obtida legalmente e nenhum outro acordo contratual seja quebrado. As leis comerciais dos EUA visam permitir a engenharia reversa se for do interesse de melhorar o produto ou criar interoperabilidade com outros produtos que anteriormente eram incompatíveis.

A engenharia reversa de um produto patenteado é geralmente legal de acordo com a Lei de Defesa dos Segredos Comerciais, mas há situações em que sua legalidade é questionável. Os proprietários de patentes têm recursos legais contra qualquer pessoa que copie as suas invenções.

Software de engenharia reversa com a finalidade de copiar ou duplicar um programa pode constituir uma violação da lei de direitos autorais. Algumas licenças de software proíbem especificamente a engenharia reversa. Outros acordos contratuais também podem limitar o uso de engenharia reversa para obter acesso ao código, incluindo termos de serviço ou avisos de uso e não divulgação e outros tipos de acordos de desenvolvedor.

Medidas de proteção tecnológica (TPM), como senhas, criptografia e dispositivos de controle de acesso, são frequentemente usadas para controlar o acesso a software e outros conteúdos digitais protegidos por direitos autorais. Contornar o TPM pode levantar questões legais.

As várias leis relativas à engenharia reversa incluem o seguinte:

  • lei de patentes;
  • lei de direitos autorais e uso justo;
  • lei de segredo comercial;
  • disposições antievasão da Lei de Direitos Autorais do Milênio Digital;
  • Lei de Privacidade das Comunicações Eletrônicas; e
  • qualquer lei contratual específica para o produto em questão.
  • Quando uma contestação de engenharia reversa é levada a tribunal, o proprietário original do objeto, sistema ou propriedade intelectual deve provar que criou o objeto ou possui a patente ou os direitos autorais.

A pessoa ou organização que faz a engenharia reversa deve provar que obteve as informações de forma legal.

Uma maneira de fazer engenharia reversa propositalmente e desenvolver um novo produto de software para evitar violação de patentes ou direitos autorais é usar uma sala limpa ou uma técnica de parede ética, na qual dois grupos separados de programadores trabalham no projeto, garantindo que o original não seja copiado diretamente.

Veja mais em: Qual é a história da Inteligência Artificial (IA)?

A engenharia reversa é uma área complicada da ética e da lei. A proliferação da tecnologia da informação em muitos sectores da vida quotidiana está a tornar tudo ainda mais complicado.

O que é engenharia reversa?


A engenharia reversa tem muitos usos legítimos em TI. Pode ser uma abordagem legal e ética para resolver problemas de compatibilidade, recriar peças legadas, fazer avaliações de segurança, melhorar um produto existente ou torná-lo mais barato.

Leia mais em: Como o Google usa a Inteligência Artificial.

As etapas envolvidas são complicadas e variam dependendo do que está sendo submetido à engenharia reversa. Por exemplo, profissionais de controle de qualidade que buscam resolver problemas de usuários com produtos de software podem fazer engenharia reversa de uma reclamação para chegar à sua causa. Identificar as causas principais dos problemas do usuário não é fácil, mas as técnicas de engenharia reversa eliminam algumas suposições.

Inscreva-se na Newsletter

DOSE DIÁRIA DE INTELIGÊNCIA ARTIFICIAL
E receba atualizações sobre IA todo dia no seu e-mail

Subscription Form

Mais para explorar

Entre para a melhor formação de IA na prática do Brasil