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