A engenharia inversa está a desmontar um objecto para ver como funciona de modo a duplicar ou melhorar o objecto. A prática, retirada de indústrias mais antigas, é agora frequentemente utilizada para hardware e software informático. A engenharia inversa de software envolve a inversão do código da máquina de um programa (a string de 0s e 1s que são enviados para o processador lógico) de volta para o código fonte em que foi escrito, usando declarações de linguagem do programa.
A engenharia inversa de software é feita para recuperar o código fonte de um programa porque o código fonte foi perdido, para estudar como o programa executa certas operações, para melhorar o desempenho de um programa, para corrigir um bug (corrigir um erro no programa quando o código fonte não está disponível), para identificar conteúdo malicioso num programa como um vírus ou para um programa escrito para utilização com um microprocessador para utilização com outro. A engenharia inversa para efeitos de cópia ou duplicação de programas pode constituir uma violação dos direitos de autor. Em alguns casos, o uso licenciado de software proíbe especificamente a engenharia inversa.
Uma pessoa que faça engenharia inversa em software pode utilizar várias ferramentas para desmontar um programa. Uma ferramenta é um dumper hexadecimal, que imprime ou exibe os números binários de um programa em formato hexadecimal (que é mais fácil de ler do que um formato binário). Ao conhecer os padrões de bits que representam as instruções do processador, bem como os comprimentos das instruções, o engenheiro reverso pode identificar certas partes de um programa para ver como funcionam. Outra ferramenta comum é o disassembler. O disassembler lê o código binário e depois exibe cada instrução executável em forma de texto. Um disassembler não consegue distinguir entre uma instrução executável e os dados utilizados pelo programa, pelo que é utilizado um depurador, o que permite ao disassembler evitar a desmontagem das partes de dados de um programa. Estas ferramentas podem ser utilizadas por um cracker para modificar e ganhar entrada num sistema informático ou causar outros danos.
Hardware reverse engineering envolve desmontar um dispositivo para ver como funciona. Por exemplo, se um fabricante de processador quiser ver como funciona o processador de um concorrente, pode comprar o processador de um concorrente, desmontá-lo, e depois fazer um processador semelhante a ele. No entanto, este processo é ilegal em muitos países. Em geral, a engenharia inversa de hardware requer muita perícia e é bastante cara.
Um outro tipo de engenharia inversa envolve a produção de imagens 3-D de peças fabricadas quando não há um plano disponível para refabricar a peça. Para a engenharia reversa de uma peça, a peça é medida por uma máquina de medição de coordenadas (CMM). À medida que é medida, é gerada uma imagem 3-D que é exibida num monitor. Após a medição estar completa, a imagem é dimensionada. Qualquer peça pode ser engendrada por engenharia inversa utilizando estes métodos.
O termo engenharia inversa é por vezes utilizado em contraste com engenharia inversa.