# O que é Software Reverse Engineering?

É o processo de analisar o código ou a estrutura de um software pronto para entender como ele funciona.

## Definição
É um trabalho de detetive realizado quando você tem apenas um programa em execução e não consegue acessar seu código-fonte. Ao analisar os arquivos binários do programa, você revela sua lógica, vulnerabilidades de segurança ou princípios de funcionamento.

## Como funciona
Usando ferramentas de análise especializadas (desmontadores/descompiladores), os códigos de máquina do software são tornados legíveis. Em seguida, processos de raciocínio lógico são aplicados sobre esses códigos.

## Onde é usado
É utilizado em pesquisas de segurança, na análise de softwares concorrentes ou na modernização de sistemas legados.

## Costuma ser confundido com
Não deve ser confundido com a escrita de código; aqui, o objetivo não é produzir, mas sim decifrar o que já existe.

## Perguntas frequentes
**Isso é legal?**
É geralmente aceito para pesquisas de segurança, mas deve-se ter cuidado com direitos autorais e contratos de licença.


## Termos relacionados
- [Vulnerability Scanning](/pt/dictionary/vulnerability-scanning/)
- [Binary](/pt/dictionary/binary/)
- [Security Scanner](/pt/dictionary/security-scanner/)

## Ferramentas relacionadas
- [Ghidra](/pt/discover/ghidra/)

---
Fonte: TreScout Glossário · https://trescout.com/pt/dictionary/software-reverse-engineering/
