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. Diversas áreas da tecnologia se beneficiam do conhecimento de engenharia reversa:

  • 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, RevEng, EngRev, reversing, etc.

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 16h é 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 a 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:

Day 1
Reverse engineering and its applications
Speaking in binary and hexadecimal
Files
Binary files
Text strings
ASCII and Unicode
Executable files
Headers and fields
Sections and mapping
Program loading process

Day 2
Assembly 101
Architectures
CPU registers
Basic instructions
Functions and stack
Debugging basics
Opcodes, mnemonics and instructions
Software breakpoints
In-line Patching
Crackme challenge

Pré-requisitos:

  • Lógica de programação.
  • Básico de arquitetura de SO.
  • 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.

Alguns números do treinamento:

  • 53 alunos treinados nas 6 vezes que rodamos este treinamento, totalizando mais de 80 horas de aula.
  • 100% dos alunos que responderam a pesquisa indicam o treinamento.
  • Avaliação geral:  (4,8).

Turmas abertas em 2017:

Cidade (Bairro) Data Vagas Inscrição
Rio de Janeiro – RJ (Centro) Abril 12/12 Em breve
São Paulo – SP (Itaim Bibi) Abril 12/12 Em breve

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