Este é um curso criado pelo Fernando Mercês do Mente Binária e distribuído gratuitamente para a comunidade. Conheça o “Curso de Engenharia Reversa Online (CERO)” e o projeto mantido pelo Fernando desde 2007 com o Mente Binária. Cogite apoiar o projeto.
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 (em nosso caso, Assembly) podem entender como o programa funciona e, assim, estudá-lo ou até fazer alterações no mesmo.
O treinamento
O CERO (Curso de Engenharia Reversa Online) é um treinamento básico gratuito publicado no canal Papo Binário no YouTube, graças ao suporte de apoiadores do projeto. A primeira fase do treinamento está completa e as aulas publicadas estão abaixo.
Instrutor
@Fernando Mercês
Aulas publicadas
- Aula 0 – Como funciona a Engenharia Reversa
- Aula 1 – Sistemas de Numeração
- Aula 2 – Arquivos
- Aula 3 – Arquivos binários
- Aula 4 – Strings de texto
- Aula 5 – Executável PE – Apresentação
- Aula 6 – Executável PE – Seções e endereçamento
- Aula 7 – Executável PE – Imports Table
- Aula 8 – Executável ELF – Apresentação
- Aula 9 – Executável ELF – Símbolos, PLT e GOT
- Aula 10 – Win32 API
- Aula 11 – Linux syscalls
- Aula 12 – Assembly – Instruções e registradores
- Aula 13 – Assembly – Repetições e saltos
- Aula 14 – Assembly – Convenções de chamada de função
- Aula 15 – Funções e pilha
- Aula 16 – Breakpoints de software
- Aula 17 – Quebrando o crackme do Cruehead (Parte 1)
- Aula 18 – Quebrando o crackme do Cruehead (Parte 2)
- Aula 19 – Compressão de executáveis
- Aula 20 – Descompressão e reconstrução da IAT
- Aula 21 – Breakpoints de memória
- Aula 22 – Rastreando instruções (tracing)
- Aula 23 – Strings ofuscadas
- Aula 24 – Anti-debug
Pré-requisitos
- Máquina virtual com Ubuntu
- Máquina virtual com Windows 7
- Lógica de programação
- Desejável ter assistido o treinamento gratuito Programação Moderna em C.
.