Engenharia reversa para 
principiantes 
Conhecimentos e habilidades 
necessárias para iniciar-se na arte 
da escovação de ...
Objetivos 
• Iniciante 
o Apontar caminhos de aprendizado 
• Intermediário 
o Preencher lacunas de conhecimento 
o Gerar d...
O que é engenharia reversa 
Descobrir os princípios tecnológicos de um dispositivo, um 
objeto ou um sistema (programa). 
...
Onde a engenharia reversa é usada 
• Empresas de antivírus (vacina) 
• Análise de vulnerabilidades (service-packs) 
• Debu...
Conhecimentos necessários 
• Programação 
o Conceitos básicos 
o APIs 
o Arquitetura
Conhecimentos necessários 
• Sistema operacional 
o Sistema de janelas 
o Processos e threads 
o Gerenciamento de memória
Conhecimentos necessários 
• Ferramentas 
o Depuradores 
o Disassemblers 
o Loggers
Programação 
• Conceitos básicos 
• APIs 
• Arquitetura
Conceitos básicos de programação
Conceitos básicos de programação 
• Aprenda lógica 
• Aprenda C 
o C Completo e Total (Schildt) 
o Treinamento em linguage...
APIs
APIs 
• Aprenda a programar para seu SO preferido 
o Programming Windows (Petzold) 
o Advanced Programming In The UNIX Env...
Arquitetura
Arquitetura 
• Aprenda os conceitos básicos da arquitetura preferida 
o Introdução a microprocessadores 
o Guia do Program...
Sistema operacional 
• Arquitetura 
• Sistema de janelas 
• Processos e threads 
• Gerenciamento de memória
Arquitetura do sistema operacional 
• Divisão modular do sistema operacional 
o Microsoft Windows Internals (Russinovich) ...
Sistema de janelas 
Cada sessão possui d desktops e cada desktop possui w 
janelas. Cada sessão possui p processos, que po...
Sistema de janelas
Sistema de janelas 
• Programar para Windows 
o Programming Windows (Petzold) 
• Testar relação e mensagens entre janelas ...
Processos e threads 
• Um processo é um espaço de memória no sistema que 
contém uma ou mais linhas de execução (thread). ...
Processos de um mesmo executável
Criação de um processo
Gerenciamento de memória 
• É função do sistema operacional gerenciar a memória 
física e torná-la disponível para as apli...
Gerenciamento de memória
Gerenciamento de memória 
Um endereço virtual é um índice que se traduz em um bloco de 
memória física alocada.
Gerenciamento de memória
Gerenciamento de memória 
• Mais informações: 
o 1bit.com.br (palestra "Por dentro do Windows: 
Gerenciamento de Memória")
Ferramentas 
• Depuradores 
o WinDbg 
o OllyDbg 
• Disassemblers 
o IDA 
o OllyDbg 
• Loggers 
o File Monitor 
o Registry ...
WinDbg
WinDbg 
• Vem com o pacote "Debugging Tools" 
• Interface amigável para depuradores console 
• Depura kernel mode (núcleo ...
IDA
IDA 
• Disassembler estático e dinâmico 
• Analisa código de acordo com chamadas da API 
• Facilita reconstrução de código...
Process Monitor
Process Monitor 
• Monitora registro, arquivos e processos 
• Possui filtros extremamente poderosos 
• Consegue monitorar ...
Tarefas de aprimoramento 
• Resolver problemas em seu sistema operacional 
o Travamento de programas 
o Lentidão não esper...
Dúvidas? 
http://www.caloni.com.br/blog 
2007-10-10
Próximos SlideShares
Carregando em…5
×

Engenharia Reversa para Principiantes

1.938 visualizações

Publicada em

Conhecimentos e habilidades necessárias para iniciar-se na arte da escovação de bits.

Publicada em: Software
0 comentários
6 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.938
No SlideShare
0
A partir de incorporações
0
Número de incorporações
920
Ações
Compartilhamentos
0
Downloads
49
Comentários
0
Gostaram
6
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Engenharia Reversa para Principiantes

  1. 1. Engenharia reversa para principiantes Conhecimentos e habilidades necessárias para iniciar-se na arte da escovação de bits v1 Wanderley Caloni
  2. 2. Objetivos • Iniciante o Apontar caminhos de aprendizado • Intermediário o Preencher lacunas de conhecimento o Gerar dúvidas e questões para serem respondidas
  3. 3. O que é engenharia reversa Descobrir os princípios tecnológicos de um dispositivo, um objeto ou um sistema (programa). Sem palavras bonitas: descobrir como funciona.
  4. 4. Onde a engenharia reversa é usada • Empresas de antivírus (vacina) • Análise de vulnerabilidades (service-packs) • Debugging (e.g. blogue do Mark Russinovich) • Formatos proprietários (e.g. OpenOffice) • SOs fechados (e.g. projeto Wine)
  5. 5. Conhecimentos necessários • Programação o Conceitos básicos o APIs o Arquitetura
  6. 6. Conhecimentos necessários • Sistema operacional o Sistema de janelas o Processos e threads o Gerenciamento de memória
  7. 7. Conhecimentos necessários • Ferramentas o Depuradores o Disassemblers o Loggers
  8. 8. Programação • Conceitos básicos • APIs • Arquitetura
  9. 9. Conceitos básicos de programação
  10. 10. Conceitos básicos de programação • Aprenda lógica • Aprenda C o C Completo e Total (Schildt) o Treinamento em linguagem C (Mizrahi) o C - A Linguagem de Programação (R&K) • Programe o Programe  Programe
  11. 11. APIs
  12. 12. APIs • Aprenda a programar para seu SO preferido o Programming Windows (Petzold) o Advanced Programming In The UNIX Environment (Stevens) • Use a documentação como referência o MSDN • Programe o Programe  Programe
  13. 13. Arquitetura
  14. 14. Arquitetura • Aprenda os conceitos básicos da arquitetura preferida o Introdução a microprocessadores o Guia do Programador para IBM PC (Norton) • Memória e pilha • Assembly o The Art of Assembly Language (Hyde) • Faça programas simples em assembly
  15. 15. Sistema operacional • Arquitetura • Sistema de janelas • Processos e threads • Gerenciamento de memória
  16. 16. Arquitetura do sistema operacional • Divisão modular do sistema operacional o Microsoft Windows Internals (Russinovich) • Testes no funcionamento interno do SO o Ferramentas da Sysinternals (sysinternals.com) • Funcionamento de drivers o DriverEntry.com.br
  17. 17. Sistema de janelas Cada sessão possui d desktops e cada desktop possui w janelas. Cada sessão possui p processos, que possuem n threads, que controlam w janelas.
  18. 18. Sistema de janelas
  19. 19. Sistema de janelas • Programar para Windows o Programming Windows (Petzold) • Testar relação e mensagens entre janelas e threads o Ferramenta Spy++ (Microsoft Visual Studio)
  20. 20. Processos e threads • Um processo é um espaço de memória no sistema que contém uma ou mais linhas de execução (thread). • Uma thread é uma linha de execução que roda no contexto de um determinado processo.
  21. 21. Processos de um mesmo executável
  22. 22. Criação de um processo
  23. 23. Gerenciamento de memória • É função do sistema operacional gerenciar a memória física e torná-la disponível para as aplicações. • A visão de uma aplicação quanto à memória se trata de uma abstração chamada de memória virtual.
  24. 24. Gerenciamento de memória
  25. 25. Gerenciamento de memória Um endereço virtual é um índice que se traduz em um bloco de memória física alocada.
  26. 26. Gerenciamento de memória
  27. 27. Gerenciamento de memória • Mais informações: o 1bit.com.br (palestra "Por dentro do Windows: Gerenciamento de Memória")
  28. 28. Ferramentas • Depuradores o WinDbg o OllyDbg • Disassemblers o IDA o OllyDbg • Loggers o File Monitor o Registry Monitor o Process Monitor o Adicionais o HxD o Process Explorer
  29. 29. WinDbg
  30. 30. WinDbg • Vem com o pacote "Debugging Tools" • Interface amigável para depuradores console • Depura kernel mode (núcleo do SO) • Extensões poderosas
  31. 31. IDA
  32. 32. IDA • Disassembler estático e dinâmico • Analisa código de acordo com chamadas da API • Facilita reconstrução de código • Cria patches (remendos para o executável original) • Gera gráfico de chamadas
  33. 33. Process Monitor
  34. 34. Process Monitor • Monitora registro, arquivos e processos • Possui filtros extremamente poderosos • Consegue monitorar boot do SO
  35. 35. Tarefas de aprimoramento • Resolver problemas em seu sistema operacional o Travamento de programas o Lentidão não esperada o Crash do SO • Quebrar proteção de programas (para aprendizado) o Antidebugging o Telas com senha o Licenciamento • Entender funcionamento de vírus o Fontes de vírus conhecidos o Ataques recebidos por email o Desenvolvimento de ataques (para aprendizado) • Faça você mesmo (não espere por ajuda)
  36. 36. Dúvidas? http://www.caloni.com.br/blog 2007-10-10

×