Melhor resposta
Um dos maiores (se não o maior) site da Web que contém desafios de Engenharia de código reverso é Crackmes.de .
Este site é super incrível porque:
- É “s Grátis .
- Os desafios são categorizados de acordo com:
- Dificuldade: Você tem 9 níveis de dificuldade, desde Muito fácil até os mais difíceis.
- Plataforma: Você quer praticar seu Windows, Linux , etc … invertendo habilidades?
- Idioma: Você deseja resolver um crackme escrito em qual idioma? Sim, se você tiver experiência na engenharia reversa de código, você notará que na maioria dos casos não é exatamente o mesmo fazer a engenharia reversa de um executável escrito em Delphi em comparação com outro escrito em linguagem assembler.
- Crackmes resolvidos: se você está começando seu caminho na engenharia reversa, pode procurar por crackmes de fácil solução, para poder comparar seu método de craqueamento com os crackers que o resolveram antes de você, que “s realmente um tesouro para aprender e expandir suas habilidades de raciocínio e resolução.
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!