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 curso
O CERO (Curso de Engenharia Reversa Online) é um curso básico de engenharia reversa gratuito publicado no nosso canal no YouTube Papo Binário, graças ao suporte dos nossos apoiadores.
O instrutor
@Fernando Mercês é Pesquisador de Ameaças na Trend Micro, onde atua como investigador de ciber crime, utilizando engenharia reversa e técnicas de inteligência de ameaças no time de Pesquisa de Ameaças Futuras (FTR). Criador de várias ferramentas livres na área, com frequência apresenta suas pesquisas nos principais eventos de segurança no Brasil e no exterior. É também professor e fundador da Mente Binária, uma instituição de ensino e pesquisa sem fins lucrativos comprometida com o ensino de computação no Brasil.
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 curso gratuito Programação Moderna em C.
-
4
-
1