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 nosso canal no YouTube Papo Binário, graças ao suporte dos nossos apoiadores. A primeira fase do treinamento está completa e as aulas publicadas estão abaixo.
Instrutor
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 assistir o treinamento gratuito Programação Moderna em C.