O que é Engenharia Reversa?

Engenharia reversa de software é a técnica para entender como um trecho de código funciona sem possuir seu código-fonte. É aplicável em diversas áreas da tecnologia como:

  • Análise de malware
  • Reimplementação de software e protocolos
  • Correção de bugs
  • Análise de vulnerabilidades
  • Adição/Alteração de recursos no software
  • Proteções anti-pirataria

Alguns termos e abreviações para a engenharia reversa incluem: RCE (Reverse Code Engineering), RE, e reversing.

Como funciona?

Quando um programa tradicional é construído, o resultado final é um arquivo executável que possui uma série de instruções em código de máquina para que o processador de determinada arquitetura possa executar. Com ajuda de software específicos, profissionais com conhecimentos dessa linguagem de máquina (em nosso caso, Assembly x86) podem entender como o programa funciona e, assim, estudá-lo ou até fazer alterações no mesmo.

O treinamento

Este curso de 16 horas, ministrado em dois sábados, das 9 às 18h, é uma sólida introdução sobre engenharia reversa na arquitetura x86. Nele o aluno aprende desde o zero e com a preocupação de entender o motivo de cada passo, como reverter programas básicos na plataforma Windows (apesar de vários dos assuntos estudados serem aplicáveis a outras plataformas com pouca ou nenhuma adaptação), adquirindo assim todo o conhecimento necessário para seguir seus estudos em desafios mais avançados na engenharia reversa de aplicações em geral, como análise de malware. Cada tópico prático do curso é acompanhado de um ou mais exercícios para fixação do conteúdo. Uma máquina virtual é entregue ao aluno e todos os laboratórios são realizados nela.

Programa:

Dia 1

  • Engenharia Reversa e suas aplicações
  • Sistemas de numeração
  • Arquivos
    • Arquivos binários
  • Strings de texto
    • ASCII e UNICODE
  • Arquivos executáveis
    • O formato PE
      • Cabeçalhos e campos
      • Seções e seu mapeamento em memória
    • Processo de carregamento de programas
  • Chamadas à API do Windows

Dia 2

  • Assembly x86
    • Arquiteturas
    • Registradores e flags
    • Instruções básicas
    • Chamadas de funções e uso da pilha de memória
  • Depuração básica
    • Opcodes, mnemônicos e instruções
    • Breakpoints
    • Patches

Pré-requisitos:

  • Lógica de programação.
  • Noções de shell do Linux.
  • Inglês técnico (leitura).
  • Virtualização com VirtualBox.
  • Laptop próprio com placa de rede sem fio, VirtualBox instalado e capacidade para rodar uma VM de 1 GB de RAM e 30 GB de disco.
  • Não é necessário conhecer Assembly previamente.
  • Desejável assistir as aulas do treinamento Programação Moderna em C.

Alguns números do treinamento:

  • 60 alunos treinados nas 7 vezes que rodamos este treinamento, totalizando 112 horas de aula.
  • 100% dos alunos que responderam a pesquisa indicam o treinamento.
  • Avaliação geral:  (4,9).

Opinião de quem já fez:

  • Treinamento excelente, o investimento é imensuravelmente válido. Além disso o envolvimento pós-curso, através do grupo de estudo é muito interessante. Superou minhas expectativas!
  • Gostei do curso porque mesmo sem conhecimento nenhum de engenharia reversa eu consegui entender todos os conceitos passados na aula e resolver os laboratórios.
  • O treinamento foi realmente excelente. Tudo foi excelente. E o bônus foi a turma. Fazia tempo que eu não fazia um treinamento tão bom, com a galera tão focada em aprender e um instrutor que realmente domina o assunto. É um assunto que sempre quis me aprofundar e certamente fiquei muito satisfeito.
  • Muito bom! O curso preenche exatamente a lacuna do que falta em livros e outros materiais, onde o conteúdo apresentado geralmente começa num nível muito avançado.
  • Um treinamento que vale cada centavo investido, ótimo profissional com um assunto excelente e didática incrível.
  • Surpreendeu positivamente! Não esperava que fosse tão bom e tão útil. Muito obrigado.

Turmas abertas em 2017:

Cidade (Bairro) Data Vagas Inscrição
São Paulo – SP (Faria Lima) 15 e 22 de Abril 3

Todos os direitos reservados. Tema por Anders Norén.