Melhor resposta
Esta é uma questão muito ampla. Depende do tipo de produto em que você está interessado.
Aqui estão alguns exemplos de engenharia reversa em que estive envolvido:
A resposta de Michael Durcan a Como é a engenharia reversa de uma engrenagem reta feita?
A resposta de Michael Durcan para Como as técnicas modernas de engenharia reversa, como CMM portátil e digitalização a laser funcionam?
A resposta de Michael Durcan para How can I aprende engenharia reversa?
Resposta
Vou presumir que você não é especialista em ciência da computação e programação de baixo nível, então a resposta é sim, é muito difícil.
Existem dois “níveis” de linguagens de programação; Alto e baixo. Linguagens de alta programação são geralmente muito fáceis de usar e aprender. Eles são legíveis por humanos e precisam ser “traduzidos” por máquinas para serem executados. Exemplos de linguagens de programação de alto nível são Javascript, R, Python, Java e muitos mais.
Linguagens de programação de baixo nível são mais difíceis de aprender. Eles precisam entender melhor como a memória e os processos do computador funcionam. O melhor e mais famoso exemplo de linguagem de baixo nível é o C. C é muito poderoso e difícil de aprender. Mas é muito mais fácil de entender do que as linguagens de programação de alto nível. Uma linguagem de programação de baixo nível é a Assembly. O código assembly existe em diferentes tipos, mas todos são complicados, irritantes e muito difíceis de ler. O código de montagem é uma parte importante na engenharia reversa. Se você fizer engenharia reversa em algo, verá / alterará o código de montagem de um programa.
Você tem que entender que Assembly é basicamente a língua mãe. Se você escrever um programa, sempre haverá um código Assembly com ele. Ou seu compilador traduz seu código em Assembly ou o interpretador faz isso para você em tempo real.
O que tudo isso basicamente significa é que se tornar um verdadeiro profissional de engenharia reversa é fácil. Tudo o que você realmente precisa fazer é se tornar fluente nos diferentes tipos de montagem e aprender a programar em C. O único problema é que essas duas coisas são difíceis de fazer.
Boa sorte!