Você escreve código em alto nível (C, Go, Rust…); um compilador o traduz para código de máquina — instruções que a CPU executa, guardadas num executável. A engenharia reversa faz o caminho de volta: do binário para entender a lógica.
- Linguagens interpretadas (Python, JS) distribuem o código-fonte/bytecode (mais fácil de ler); linguagens compiladas (C, Go) distribuem o binário (é aqui que o RE entra).