Ir para conteúdo

Caminho para os iniciantes em Engenharia Reversa


Sh3rl0ck

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.

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...
  • 1 mês depois...
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.

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois...

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.

 

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...