Engenharia Reversa

Informação

Corpo docente: João Paulo Barraca, José Luis Azevedo, Bernardo Cunha

Duração: Semestral

Horas de trabalho: 162

Horas de contacto: 45

ECTS: 6

Área científica: Informática

Objetivos

  • Conhecer técnicas para identificação de componentes constituintes de um sistema
  • Conhecer técnicas para observação do comportamento de sistemas e seus componentes
  • Conhecer metodologias de engenharia reversa
  • Conhecer protocolos e tecnologias relevantes para a construção de sistemas, aplicações e dispositivos
  • Compreender técnicas, processos e ferramentas para decomposição de software aplicacional
  • Compreender técnicas, processos e ferramentas para decomposição de sistemas e dispositivos
  • Compreender técnicas, processos e ferramentas para decomposição de aplicações móveis
  • Capacidade de efetuar tarefas de engenharia reversa
  • Capacidade de documentar o processo de engenharia reversa
  • Capacidade para replicação de um componente através de engenharia reversa

Resultados de Aprendizagem

  • Conhecer técnicas para identificação de componentes constituintes de um sistema
  • Conhecer técnicas para observação do comportamento de sistemas e seus componentes
  • Conhecer metodologias de engenharia reversa
  • Conhecer protocolos e tecnologias relevantes para a construção de sistemas, aplicações e dispositivos
  • Compreender técnicas, processos e ferramentas para decomposição de software aplicacional
  • Compreender técnicas, processos e ferramentas para decomposição de sistemas e dispositivos
  • Compreender técnicas, processos e ferramentas para decomposição de aplicações móveis
  • Capacidade de efetuar tarefas de engenharia reversa
  • Capacidade de documentar o processo de engenharia reversa
  • Capacidade para replicação de um componente através de engenharia reversa

Avaliação

A componente teórica será avaliada através de exames teóricos, e terá o peso de 50%. A componente prática será avaliada através de trabalhos e projetos de análise e implementação, também com um peso de 50%.

Metodologia

A disciplina considera aulas teórico-práticas com um balanço entre teoria e prática adaptado a cada tema.

As aulas teóricas consistem na apresentação e discussão dos conteúdos programáticos, com diálogo com os alunos, suportado em casos de uso. As aulas práticas serão dedicadas à exploração de problemas, aplicação de técnicas e realização de análises.

Considera-se a existência de trabalhos e projetos, realizados em grupo ou individualmente, que permita a aplicação dos conteúdos em situações de maior complexidade. Será favorecida a utilização de cenários próximos da realidade e de ferramentas e problemas reais, como a análise de sistemas, aplicações e dispositivos com que alunos convivam, ou que sejam relevantes para o enquadramento académico e profissional.

Conteúdos

  • Introdução à engenharia reversa, sua importância e impacto
  • Aspetos éticos relacionados com a engenharia reversa
  • O processo de análise e documentação de um sistema

  • Análise de aplicações móveis

    • Estrutura de um sistema móvel e aplicação móvel
    • Extração e análise de aplicações
    • Decompilação e desobfuscação
    • Técnicas de proteção em aplicações móveis
  • Análise de aplicações

    • Ferramentas e metodologias para a análise de aplicações
    • Estruturas comuns de ficheiros
    • Técnicas de Depuração
    • Análise de ficheiros e decompilação
    • Convenções de invocação de funções, estruturas e ciclos
    • Emulação de binários
    • Técnicas de proteção em aplicações
  • Análise de dispositivos e comunicações

    • Caracterização funcional de um dispositivo
    • Protocolos de comunicações com fios e sem fios
    • Pontos de acesso para depuração
    • Identificação e análise de sistemas e protocolos de comunicação
    • Extração e manipulação de firmware
    • Emulação de dispositivos
    • Técnicas de proteção em dispositivos e comunicações

Bibliografia recomendada

  • Dang, B., Gazet, A., & Bachaalany, E. (2014). Practical reverse engineering: x86, x64, ARM, Windows kernel, reversing tools, and obfuscation. John Wiley & Sons. ISBN 978-1118787311
  • Sanders, C. (2017). Practical packet analysis: Using Wireshark to solve real-world network problems, 3rd Edition. No Starch Press. ISBN 978-1593278021
  • O’Neill, R. E.(2016). Learning Linux Binary Analysis. Packt Publishing. ISBN 978-1782167105