Descompilação de programas Flashcards

1
Q

O que é engenharia reversa?

A

É uma técnica que permite destrinchar o funcionamento de um sistema, objeto ou dispositivo através da análise de sua operação, estrutura e função.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Engenharia reversa de arquivos maliciosos

A

Permite uma investigação minuciosa do código-fonte, protocolos de comunicação e outros componentes do sistema. Com isso, é possível identificar pontos fracos que podem ser explorados para executar código malicioso, ganhar acesso não autorizado ou comprometer a integridade dos dados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Descompilação

A

Produzir, a partir de um executável, um programa fonte em linguagém de alto-nível que, quando compilado, tem a mesma funcionalidade do executável original. Operação inversa de um compilador.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Usos da engenharia reversa em segurança

A

Software malicioso;
Reversão de algoritmos criptográficos;
Direitos autorais;
Auditoria de código binário (objetiva descobrir se o software apresenta risco).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Usos da engenharia reversa em desenvolvimento de software

A

Adquirir interoperabilidade com software proprietário;
Desenvolver softwares competitivos;
Avaliar qualidade e robustez de softwares.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Métodos de análise em engenharia reversa

A

Análise offline e análise online.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Análise offline em engenharia reversa

A

Essa análise não leva em consideração a execução do código, bastante utilizada para descobrir pedaços específicos do código. Observa-se apenas o código, não o fluxo de dados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Análise online em engenharia reversa

A

Alguns casos quando o código sofre um tratamento para não ser visível através de engenharia reversa, a análise offline não produz resultados, sendo necessário a observação do código em execução. Descobre o comportamento do programa e seu fluxo de dados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Ferramentas de descompilação

A

Disassemblers (IDA-PRO, ILDasm) e debuggers (User mode: OnlyDbg, WinDbg, IDA PRO, PEBrowse Professional Interative. Kernel Mode: WinDbg, Numega SoftIce, Syser Debugger).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Disassemblers

A

Muito importante na análise offline;
Decodificam o binário em assembly;
Em assembly cada comando equivale a uma instrução de computador;
Montador é o programa responsável em transformar o assembly em código de máquina;
Disassembler faz o trabalho inverso do montador.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Assembly

A

Não é apenas uma linguagem, é um conjunto de linguagens, aonde cada plataforma possui um conjunto específico de instruções Assembly que é um pouco diferente dos demais.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Ferramenta Interative Disassembler - IDA PRO

A

Principal ferramenta da engenharia reversa, interface se assemelha a uma IDE, suporta uma variedade de arquitetura de processadores (IA-32, IA-64, Itanium, AMD64), implementa todo o fluxograma de execução baseado nas condições de desvio.
PAGA
Produz gráficos mostrando quais funções chamam API’s ou funções internas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Ferramenta ILDasm

A

Disassembler para a Microsoft Intermediate Language, que é uma linguagem de baixo nível utilizada em linguagens .NET;
Fundamental para reverter aplicações .NET.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Ferramentas debuggers

A

Utilizadas para localizar e corrigir erros no programa em tempo de execução;
Possibilita a verificação do comportamento em tempo de execução, como os dados na memória, registradores e pilha de execução;
Utilizada em análise Online;
Se dividem em USER-MODE ou KERNEL-MODE.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Funcionalidade dos debuggers

A

Poderosa ferramenta disassembler;
Breakpoints de software e hardware;
Visualização de registro e memória;
Informações sobre processos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Modo de operação debuggers User-Mode

A

Operam com restrição dentro do SO;
Só podem analisar um processo por vez;
Não executam e não acessam componentes do sistema operacional, tarefas administrativas ou dispositivos que utilizam drivers.
Vantagem: fácil configuração e utilização.

17
Q

Ferramenta debugger user-mode

A

OllyDbg, o mair conhecido;
Permite reescrever o código Assembly e remontá-lo com um clique;
Permite identificar blocos de instruções, loops, desvios, jumps e estruturas de códigos;
Gratuito e atua em modo usuário;
Funciona como debugger e disassembler.

18
Q

Ferramenta debugger WinDbg

A

Distribuído pela Microsoft, grande integração com Windows;
Opera nos dois modos (user-mode e kernel-mode);
Não permite alteração online do código.

18
Q

Modo de operação debugger Kernel-Mode

A

Utilizado em programas que possuem chamadas ao sistema operacional ou bibliotecas dinâmicas ou dispositivos de hardware;
Permite controle ilimitado sobre o binário analisado, permitindo controle sobre todo o comportamento do SO;
Risco de desestabilizar o SO.

19
Q

Ferramenta debugger SoftICE

A

Atua no Kernel Mode;
Recomendado para desenvolvedores de Drivers Windows;
Diferente das outras ferramentas que atuam em modo kernel, possibilita fazer inspeção no SO local.

20
Q

Virtualização para debuggers

A

Debuggers de kernel mode possibilitam a interrupção do SO de forma simples, a virtualização é recomendade para manter o sistema isolado, permitir simulações de hardwares diversos e permitir recuperação em caso de falha.

21
Q

Decompiladores

A

Objetivam produzir um código tão alto nível quanto o cód. fonte original;
Processo de compilação vai depender da tecnologia e da arquitetura utilizada.

22
Q

Exemplo de decompiladores

A

IA-32:
Boomerang
Andromeda
DCC.
Java:
JAD.