Ir para conteúdo
  • Cadastre-se
Sh3rl0ck

Caminho para os iniciantes em Engenharia Reversa

Posts Recomendados

O que é?

A engenharia reversa, também conhecido com reverse engineering ou RE. O conceito nasceu no mundo real, quando precisávamos saber como algo funciona ou como foi construído, quando não tínhamos uma documentação ou conhecimento disso. Um grande exemplo disso tratasse do ambiente competitivo das indústrias, onde uma empresa x lançava um produto novo com mercado com um bom diferencial, principalmente com algo inovador deixando seu concorrentes para trás, mas um ou mais concorrente para não ter tanta perde financeira ou de imagem, pegava este novo produto e começava a tentar descobrir como ele funcionava de várias formas, uma delas poderia ser desmontando e analisando cada parte do produto e de que material era feito, em seguida o mesmo criava um produto similar para competir baseado na engenharia reversa realizada.

Na computação a engenharia reversa existe também, tanto de hardware como para software, mas neste caso vamos somente nos referir a engenharia reversa de software, onde temos geralmente o cenário de ter um programa compilado, já em seu formato binário, não temos seu fonte, mas queremos saber como ele foi feito, como funciona e até como altera-lo. É importante destacar que RE não é exclusivo de caso de arquivos em binário, pode ser também de códigos que estão utilizado técnicas de ofuscação, arquivos intermediários de compilação e etc...

 

Por que aprender?

A RE é utilizada em várias áreas e situações, seguem alguns exemplos:

  • Crackear um programa;
  • Criar cheats;
  • Proteção de propriedade intelectual do software;
  • Debugar um programa para achar onde está dando erro;
  • ´Criar exploits;
  • Criação de softwares seguros;
  • Bypass em antivírus e firewall;
  • Na computação forense é muito utilizado para analisar malware;
  • Criar proteções contra malwares, inclusive antivirus nada mais é do que uma analise de malware automatizada pro assim dizer;
  • Entender como determinado programa funciona;
  • Utilizado em parte da criação de Rootkits;

Além desses fatores podem existir outros, mas dá para ter uma ideia do quão importante é aprender RE.

 

Como aprender?

Antes de partir diretamente para os estudos focados em RE, é necessário que tenha as bases bem formadas, caso contrário poderá ficar muito perdido ao ler literaturas que falam do assunto, pois parte do princípio que já conhece assembly e chamadas de sistema.

  1. Primeiramente deve-se aprender arquitetura de computadores, onde aprenderá como o computador funciona como, como o hardware e software funcionam juntos e principalmente o ponto mais importante como que funciona a memória RAM e processador, que é o que o assembly interagem bastante. A literatura que indico é: "Organização Estruturada de Computadores" de Andrew S. Tanenbaum.
  2. É indicado saber o que é um sistema operacional, pois o assembly interage frequentemente com o mesmo com as chamadas de sistema. Nesse caso deixo 2 literaturas indicadas, basta ler pelo menos uma delas: "Fundamento de Sistemas Operacionais" de Silberschatz, Galbin e Gagne (De fácil leitura) e "Sistemas Operacionais Modernos" de Andrew S. Tanenbaum.
  3. O Assembly em si, que é a linguagem que utilizará na engenharia reversa: Para linux "Assembly Language Step-by-Step: Programming with Linux" de Jeff Duntemann  e "The Art of Assembly Language, 2nd Edition" de Randall Hyde.
  4. Indico aprende mais sobre o Windows como funciona internamente: "Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7th Edition)" de Pavel Yosifovich , Alex Ionescu , Mark E. Russinovich , David A. Solomon.
  5. Finalmente sobre engenharia reversa indico começar pelo "Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation" de  Bruce Dang  , Alexandre Gazet, Elias Bachaalany, Sébastien Josse. E depois pegar "Reversing: Secrets of Reverse Engineering" de Eldad Eilam

Em seguida poderá se aprofundar melhor em outras áreas que utilizam RE.

  • Agradecer 5

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, Fernando Eloi disse:

Como entrar no mercado de trabalho de RE? ´precisa de algum curso/certificação/faculdade etc?

Não acredito que exista um mercado de trabalho de RE, em minha visão, é apenas uma habilidade ou um conjunto de habilidades utilizadas na prática de alguns profissionais, como pesquisadores, Analistas de Malware, Pentesters ou mesmo programadores "comuns" ao suportar sistemas legados.

  • Agradecer 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 09/11/2017 em 11:18, MateusP disse:

Não acredito que exista um mercado de trabalho de RE, em minha visão, é apenas uma habilidade ou um conjunto de habilidades utilizadas na prática de alguns profissionais, como pesquisadores, Analistas de Malware, Pentesters ou mesmo programadores "comuns" ao suportar sistemas legados.

Sim, o que o MateusP disse é verdade, a serve como apoio/base para outras profissões.

  • Agradecer 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

excelentes dicas. Eu mesmo estava com muita dificuldade de entender a estrutura do computador (Como o programa e carregado na memoria, como o processador faz as chamadas as instruções armazendas na RAM). Acredito que o livro Organização Estruturada de Computadores  e uma leitura obrigatoria para quem esta no mundo da programação assembly.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

como o Fernando Elói estava perguntando, então não tem faculdade para RE ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse Livro do Andrew S. Tanenbaum já peguei para fazer meu TCC, recomendo muito bom.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×