Você está na página 1de 88
3.1 Técnicas e ferramentas de decompilação de programas. 3.2 Debuggers. Perito Polícia Federal – 2013

3.1 Técnicas e ferramentas de decompilação de programas.

3.2 Debuggers.

ferramentas de decompilação de programas. 3.2 Debuggers. Perito Polícia Federal – 2013 Lúcio Camilo –
ferramentas de decompilação de programas. 3.2 Debuggers. Perito Polícia Federal – 2013 Lúcio Camilo –

Perito Polícia Federal – 2013

Lúcio Camilo – luciocamilo@gmail.com

Lúcio Camilo

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Bibliografia

Engenharia Reversa para iniciantes:

http://1bit.com.br/

http://www.caloni.com.br/blog

http://www.sawp.com.br/

Reversing: Secrets of Reverse Engineering,

Eldad Eilam

● http://www.sawp.com.br/ ● Reversing: Secrets of Reverse Engineering, Eldad Eilam Lúcio Camilo
Lúcio Camilo

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Contextualização

Decompilação ou Descompilação =

“produzir a partir de um executável um programa fonte em linguagem de alto-nível que, quando compilado, tem a mesma funcionalidade que o executável original”.

"realizar a operação inversa de um compilador, transformando código objeto em código fonte"

Engenharia Reversa = consiste em a partir de uma solução pronta, extrair todos os conceitos empregados para sua construção

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

O que é Engenharia Reversa?

Processo de extrair conhecimento a partir de alguma coisa já criada.

Similar à pesquisas cientifícas, porém na engenharia reversa trabalha-se com produtos fabricados pelos humanos e na pesquisa científica são fenômenos naturais.

Utilizada para obter conhecimento perdido ou inexistente.

"Dissecar" produtos e descobrir os segredos por trás destes.

Lúcio Camilo
Lúcio Camilo

Engenharia Reversa no Contexto de Software?

Ao contrário dos demais processos de Engenharia Reversa, neste caso contamos apenas com a mente humana e uma CPU.

Processo puramente virtual.

Requer uma combinação de conhecimentos tais como programação, análise lógica, instruções de hardware entre outras.

de conhecimentos tais como programação, análise lógica, instruções de hardware entre outras. Lúcio Camilo

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Engenharia Reversa - Categorias

 

1. Segurança

 

a. Softwares Maliciosos

Utilizam engenharia reversa tanto para encontrar vulnerabilidades quanto para corrigir problemas

(Empresas Antivirus).

b. Reversão de Algoritmos Criptográficos

c. Direitos Autorais

d. Auditoria de Código Binário

Objetivam descobrir se o software apresenta algum risco de utilização

2. Desenvolvimento de Software

a. Adquirir interoperabilidade com Software Proprietário

b. Desenvolvendo Softwares Competitivos

c. Avaliar qualidade e robustez de softwares

Lúcio Camilo

   

Métodos de Análise

Análise Offline -

Este tipo de análise não leva em consideração a execução do código. Muito utilizado para descobrir pedaços específicos do código, por exemplo locais aonde é feito a checagem de existência de licença ou de chave de registro. Observa-se apenas o código, e não o fluxo de dados do programa.

Análise Online -

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. Através desta análise é possível descobrir o comportamento do programa e o fluxo de controle e dados existentes.

Lúcio Camilo

desta análise é possível descobrir o comportamento do programa e o fluxo de controle e dados

Ferramentas - Disassemblers

Disassemblers - ● ● Ferramentas mais importantes na análise OFFLINE de código; ● Decodificam o
Disassemblers -
● Ferramentas mais importantes na análise
OFFLINE de código;
● Decodificam o código binário em código
assembly (de acordo com a plataforma);
● No assembly cada comando equivale a uma
instrução de computador;
● Montador é o programa responsável por
converter o assembly em código de máquina.
● Disassembler faz o trabalho inverso do
montador.
Lúcio Camilo

Não Confundir !!!

Assembly = Linguagem de Programação Assembler = Compilador de Programas Assembly
Assembly = Linguagem de Programação Assembler = Compilador de Programas Assembly

Assembly = Linguagem de Programação Assembler = Compilador de Programas Assembly

Assembly = Linguagem de Programação Assembler = Compilador de Programas Assembly
Assembly = Linguagem de Programação Assembler = Compilador de Programas Assembly
Assembly = Linguagem de Programação Assembler = Compilador de Programas Assembly
Assembly = Linguagem de Programação Assembler = Compilador de Programas Assembly
Assembly = Linguagem de Programação Assembler = Compilador de Programas Assembly
Assembly não é uma linguagem apenas, é um conjunto de linguagens, aonde cada plataforma possui
Assembly não é uma linguagem apenas, é um conjunto de linguagens, aonde cada plataforma possui

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

aonde cada plataforma possui um conjunto específico de instruções Assembly que é um pouco diferente dos
aonde cada plataforma possui um conjunto específico de instruções Assembly que é um pouco diferente dos
aonde cada plataforma possui um conjunto específico de instruções Assembly que é um pouco diferente dos
aonde cada plataforma possui um conjunto específico de instruções Assembly que é um pouco diferente dos
aonde cada plataforma possui um conjunto específico de instruções Assembly que é um pouco diferente dos

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Ferramentas

 
 

Disassemblers

 
 

IDA-PRO

ILDasm

Debuggers (Depuradores)

User-Mode

OllyDbg

WinDbg

IDA PRO

PEBrowse Professional Interative

Kernel Mode

WinDbg

Numega SoftIce

Syser Debugger

Ferramenta - Interative Disassembler - IDA PRO

Principal ferramenta utilizada para engenharia reversa;

Compõe uma série de ferramentas e sua 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;

Lúcio Camilo

IA-64, Itanium, AMD64); ● Implementa todo o fluxograma de execução baseado nas condições de desvio; Lúcio

Ferramenta - Interative Disassembler - IDA PRO

● Ferramenta paga, com suporte a uma variedade de arquivos executáveis. ● Produz gráficos que

Ferramenta paga, com suporte a uma variedade de arquivos executáveis. Produz gráficos que mostram quais funcões chamam API`s ou funções internas

arquivos executáveis. ● Produz gráficos que mostram quais funcões chamam API`s ou funções internas Lúcio Camilo
arquivos executáveis. ● Produz gráficos que mostram quais funcões chamam API`s ou funções internas Lúcio Camilo
arquivos executáveis. ● Produz gráficos que mostram quais funcões chamam API`s ou funções internas Lúcio Camilo
arquivos executáveis. ● Produz gráficos que mostram quais funcões chamam API`s ou funções internas Lúcio Camilo
arquivos executáveis. ● Produz gráficos que mostram quais funcões chamam API`s ou funções internas Lúcio Camilo
arquivos executáveis. ● Produz gráficos que mostram quais funcões chamam API`s ou funções internas Lúcio Camilo
Lúcio Camilo

Lúcio Camilo

arquivos executáveis. ● Produz gráficos que mostram quais funcões chamam API`s ou funções internas Lúcio Camilo
arquivos executáveis. ● Produz gráficos que mostram quais funcões chamam API`s ou funções internas Lúcio Camilo

Ferramenta - ILDasm

● Disassembler para a Microsoft Intermediate Language, que é a linguagem de baixo nível utilizada
● Disassembler para a Microsoft Intermediate
Language, que é a linguagem de baixo nível
utilizada em linguagens como .NET;
● Fundamental para reverter aplicações .NET;
Lúcio Camilo

Ferramentas - Debuggers

Debuggers - ● ● Ferramentas utilizada para localizar e corrigir erros do programa em tempo
Debuggers -
● Ferramentas utilizada para localizar e corrigir
erros do programa em tempo de execução;
● Possibilita verificar comportamento do
programa em tempo de execução, tais como
dados na memória, registradores e pilha de
execução;
● Utilizada na análise ONLINE.
● Podem ser divididos em USER-MODE ou
KERNEL-MODE.
Lúcio Camilo

Funcionalidades - Debuggers

1. Poderosa Ferramenta Disassembler

2. Breakpoints de Software e Hardware

3. Visualização de Registro e Memória

4. Informações sobre processos

Lúcio Camilo

de Software e Hardware 3. Visualização de Registro e Memória 4. Informações sobre processos Lúcio Camilo

Modo de Operação - Debuggers

User-Mode - ● ● Operam com restrição dentro do Sistema Operacional; ● Só podem analisar
User-Mode -
● Operam com restrição dentro do Sistema
Operacional;
● 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
Lúcio Camilo

Ferramentas - OllyDbg

Debugger mais conhecido no mercado (user- mode);

Permite reescrever o código Assembly de um programa e remontá-lo com um único 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.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Ferramenta - WinDbg

Debugger distribuído pela Microsoft;

Utilizado por usuários de Windows (grande integração);

Opera tanto em User-Mode quanto em Kernel Mode, porém para ser executado em Kernel Mode precisa ser em um sistema operacional separado remotamente.

Não permite alteração Online do código.

Lúcio Camilo

ser em um sistema operacional separado remotamente. ● Não permite alteração Online do código. Lúcio Camilo

Ferramenta - PEBrowse Professional Interative

Oferece várias visões contendo informações sobre o processo; Possue funcionalidades para programas .NET

várias visões contendo informações sobre o processo; ● Possue funcionalidades para programas .NET Lúcio Camilo

Lúcio Camilo

várias visões contendo informações sobre o processo; ● Possue funcionalidades para programas .NET Lúcio Camilo

Modo de Operação - Debuggers

Kernel-Mode -

Utilizado em programas que possuem chamadas ao sistema operacional ou bibliotecas dinâmicas ou dispositivos de hardware;

Permitem controle ilimitado sobre o binário analisado, permitindo um controle sobre todo o comportamento do sistema operacional;

Utilizado principalmente por desenvolvedores e programadores de sistemas operacionais, de drivers ou componentes de SO;

Risco de desestabilizar o SO.

Alguns podem oferecer funcionalidade user- mode.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Ferramenta - SoftICE

Debugger que atua em Kernel Mode;

Recomendado para desenvolvedores de Drivers Windows;

Diferente das outras ferramentas que atuam em modo kernel, possibilita fazer inspeção no SO

local.

● Diferente das outras ferramentas que atuam em modo kernel, possibilita fazer inspeção no SO local.

Lúcio Camilo

● Diferente das outras ferramentas que atuam em modo kernel, possibilita fazer inspeção no SO local.

Curiosidade: SoftICE -> ICE = In Circuit Emulator

Ferramenta - Syser Debbuger

Debugger que atua em Kernel Mode e baseado no SoftIce.

Recomendado para desenvolvedores de Drivers;

● Debugger que atua em Kernel Mode e baseado no SoftIce. ● Recomendado para desenvolvedores de

Lúcio Camilo

Debugger que atua em Kernel Mode e baseado no SoftIce. ● Recomendado para desenvolvedores de Drivers;

Ambiente Virtual

A utilizacão de debuggers de Kernel Mode

possibilita a interrupção do Sistema Operacional de forma simples.

A utilização de Ambientes virtuais é recomendada a

fim de manter um sistema isolado e dedicado para o

debugger. Através da simulação de hardwares é possível testar o programa em diferentes hardwares através dos ambientes virtuais. Facilita o Backup e a recuperação em caso de falha.

Lúcio Camilo

diferentes hardwares através dos ambientes virtuais. Facilita o Backup e a recuperação em caso de falha.

Decompiladores

Objetivam produzir um código tão alto nível quanto o código fonte original;

Processo de compilação sempre remove alguma informação;

O resultado da decompilação vai depender da tecnologia e da arquitetura utilizadas;

Diferença entre Decompilador e Disassembler?

Lúcio Camilo

vai depender da tecnologia e da arquitetura utilizadas; ● Diferença entre Decompilador e Disassembler? Lúcio Camilo

Decompiladores

IA-32 (Intel Architecture 32 bits)

Boomerang

Andromeda

DCC

Java

JAD

Lúcio Camilo

● IA-32 (Intel Architecture 32 bits) ○ Boomerang ○ Andromeda ○ DCC ● Java ○ JAD

Bônus

Ferramentas de Monitoração de Sistemas Técnicas Anti Engenharia Reversa

Ferramentas de Monitoração de Sistemas

Observam os canais de I/O que existem entre a aplicação e o Sistema Operacional;

Muitas vezes a engenharia reversa é possível apenas através destas ferramentas;

Diferentes tipos de ferramentas para monitoração de acordo com a necessidade.

Lúcio Camilo

destas ferramentas; ● Diferentes tipos de ferramentas para monitoração de acordo com a necessidade. Lúcio Camilo

Ferramentas de Monitoração de Sistemas

FileMon

Monitora todo o tráfego de filesystem entre aplicação e sistema operacional, e pode verificar todo o I/O de arquivos gerado pelos processos;

Com esta ferramenta podemos ver cada arquivo ou diretório que é aberto, bem como cada operação de read, write e execute de qualquer processo do sistema.

Lúcio Camilo

diretório que é aberto, bem como cada operação de read, write e execute de qualquer processo

Ferramentas de Monitoração de Sistemas

TCPView

Monitora todas as conexões TCP ou UDP ativas em cada processo;

Não mostra o tráfego atual, apenas uma listagem com quais conexões estão abertas, por quais processos, o tipo de conexão (TCP ou UDP), o número da porta e o endereço do sistema no outro ponto.

Lúcio Camilo

processos, o tipo de conexão (TCP ou UDP), o número da porta e o endereço do

Ferramentas de Monitoração de Sistemas

TDIMon (Traffic Device Interface)

Similar ao TCPView, porém pode monitorar as conexões TCP em diferentes níveis;

Provê informação sobre qualquer operação a nível de socket, incluindo envio e recebimento de pacotes.

Lúcio Camilo

Provê informação sobre qualquer operação a nível de socket, incluindo envio e recebimento de pacotes. Lúcio

Ferramentas de Monitoração de Sistemas

RegMon

Monitora o acesso de qualquer processo ou programa as informações do Registro.

Muito útil para localizar chaves de Registro mantidas por programas.

Lúcio Camilo

as informações do Registro. ○ Muito útil para localizar chaves de Registro mantidas por programas. Lúcio

Ferramentas de Monitoração de Sistemas

PortMon

Monitor de portas físicas que age sobre qualquer tráfego I/O serial ou paralelo no sistema.

Lúcio Camilo

PortMon ○ Monitor de portas físicas que age sobre qualquer tráfego I/O serial ou paralelo no

Ferramentas de Monitoração de Sistemas

WinObj

Apresenta uma visão hierárquica do namespace utilizado pelo programa.

Utilizado para identificar sincronização de objetos e verificar objetos globais, tais como dispositivos físicos.

Lúcio Camilo

para identificar sincronização de objetos e verificar objetos globais, tais como dispositivos físicos. Lúcio Camilo

Ferramentas de Monitoração de Sistemas

Process Explorer

Pode monitorar processos, DLL`s carregadas e seus espaços de endereços, CPU, memória, entre outras informações sobre os processos.

Lúcio Camilo

carregadas e seus espaços de endereços, CPU, memória, entre outras informações sobre os processos. Lúcio Camilo

Técnicas Anti Engenharia Reversa

1. Eliminar Informação Simbólica

Eliminar qualquer informação textual que possa trazer algum significado como nome de classes ou de variáveis.

2. Ofuscar o Programa

Nome genérico para um conjunto de técnicas que visam reduzir as chances de coletar informações em análises estáticas mantendo as funcionalidades originais. Ao contrário da Eliminação Simbólica, esta altera a estrutura do programa (após a compilação).

3. Embutir Código AntiDebugger

Voltado para dificultar análise online, de forma que o reversor não descubra informações sobre o comportamento interno. Envolve terminar o programa em caso de tentativa de debugger.

Lúcio Camilo

informações sobre o comportamento interno. Envolve terminar o programa em caso de tentativa de debugger. Lúcio

Técnicas Anti Engenharia Reversa

 

4. Confundir Disassemblers

 

Insere informações incorretas no início da instrução para que o disassembler se perca no processo.

5. Transformações no Controle de Fluxo

Consiste em alterar a ordem e o fluxo de um programa para reduzir a legibilidade ao gerar o Assembly. Remove o fluxo de informação e adiciona outra declaração de controle.

6. Transformações de Dados

Encriptam tanto os dados quanto a estrutura do programa. Trata de um processo importante, pois geralmente identificar uma estrutura de dados é um dos passos fundamentais para entender o funcionamento do programa.

Lúcio Camilo

     

Patching Tools

É o processo de alterar o código de forma a modificar seu comportamento.

Está relacionado à engenharia reversa pois geralmente ocorre após uma reversão de código, de forma a descobrir a posição de código que deve ser alterada.

Ferramenta:

Hex Workshop

i. Permite correção em arquivos e até mesmo em discos inteiros.

ii. Não permite o disassembler e o assembler do código.

Lúcio Camilo

em arquivos e até mesmo em discos inteiros. ii. Não permite o disassembler e o assembler

Questões Comentadas

Questão 01 - CESPE - 2004 - Polícia Federal - Perito Criminal Federal -

Informática

No processo de engenharia reversa de arquivos, a normalização tem por função reagrupar informações de forma a eliminar redundâncias de dados e permitir a obtenção de um modelo ER.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 01 - CESPE - 2004 - Polícia Federal - Perito Criminal Federal -

Informática

No processo de engenharia reversa de arquivos, a normalização tem por função reagrupar informações de forma a eliminar redundâncias de dados e permitir a obtenção de um modelo ER.

Certo

Errado

Normalização consiste justamente em eliminar as redundâncias de um esquema.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo
 

Um dos usos da engenharia reversa de software é auditar um programa

 

para avaliar sua segurança, bem como as vulnerabilidades do mesmo. Com relação aos descompiladores e desmontadores, assinale a alternativa correta.

a)

Uma das diferenças entre descompiladores e desmontadores é que

os primeiros geram fontes em linguagem de mais alto nível.

b)

Desmontadores são categorizados como ferramentas de análise

dinâmica de código; sendo assim, são usados durante a execução dos programas.

c)

A análise dinâmica é uma abordagem mais complicada que a

estática, já que não se consegue determinar como os dados fluem pelo sistema.

d)

Os descompiladores estão entre as ferramentas usadas tanto para a

análise dinâmica como para a análise estática de código.

e)

Código produzido por desmontadores é mais fácil de ser entendido

por humanos que código produzido por descompiladores.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo
Questão 02 - FUNIVERSA - 2012 - PC-DF - Perito Criminal - Informática Um dos
Questão 02 - FUNIVERSA - 2012 - PC-DF - Perito Criminal - Informática
Um dos usos da engenharia reversa de software é auditar um programa
para avaliar sua segurança, bem como as vulnerabilidades do mesmo. Com
relação aos descompiladores e desmontadores, assinale a alternativa
correta.
a) Uma das diferenças entre descompiladores e desmontadores é
que os primeiros geram fontes em linguagem de mais alto nível.
b) Desmontadores são categorizados como ferramentas de análise
dinâmica estática de código; sendo assim, são usados durante a execução
dos programas.
c) A análise dinâmica é uma abordagem mais complicada que a
estática, já que não se consegue determinar como os dados fluem pelo
sistema.
d)
Os descompiladores estão entre as ferramentas usadas tanto para a
análise dinâmica como para a análise estática de código.
e)
Código produzido por desmontadores é mais fácil de ser entendido
por humanos que código produzido por descompiladores.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo
   
 

Um desmontador ou disassembler é um programa de computador que converte código de máquina em uma representação textual.

A

diferença entre um desmontador e um descompilador é que este último

reverte a compilação em uma linguagem de alto nível, enquanto o primeiro

reverte em uma linguagem de montagem (Assembly). O código fonte em linguagem de montagem geralmente contém constantes simbólicas, comentários e rótulos de endereçamento que são normalmente removidos do código de máquina gerado. Assim, o desmontador consegue reverter apenas parcialmente o processo

de montagem, pois o código fonte produzido não irá conter essas constantes

e

comentários. Por causa disso, o código produzido por um desmontador é

mais difícil de entender (para um humano) que o código fonte original, com

suas anotações.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo
 

Com relação às ferramentas utilizadas em engenharia reversa de sistemas, assinale a alternativa correta.

 

a)

A ferramenta OllyDbg pode ser usada para fazer correções ou

patching em executáveis.

b)

Uma das deficiências do PEview está no fato de que o programa

mostra apenas os dados brutos no formato hexadecimal e não os valores correspondentes no formato texto.

c)

O Process Explorer é uma ferramenta para disassembler estático e

dinâmico, e também cria patches.

d)

Entre as ferramentas que suportam leitura e escrita em baixo nível de

arquivos, mas não suportam trabalhar com partições de discos rígidos, está o Hex Workshop.

e)

OllyDbg, WinDbg, IDA e OctEditor conseguem também monitorar o

boot do sistema operacional.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo
Questão 03 - FUNIVERSA - 2012 - PC-DF - Perito Criminal - Informática Com relação
Questão 03 - FUNIVERSA - 2012 - PC-DF - Perito Criminal - Informática
Com relação às ferramentas utilizadas em engenharia reversa de sistemas,
assinale a alternativa correta.
a) A ferramenta OllyDbg pode ser usada para fazer correções ou
patching em executáveis.
b)
Uma das deficiências do PEview está no fato de que o programa
mostra apenas os dados brutos no formato hexadecimal e não os valores
correspondentes no formato texto.
c)
O Process Explorer é uma ferramenta para disassembler estático e
dinâmico, e também cria patches. ferramenta para monitoração de
processos
d)
Entre as ferramentas que suportam leitura e escrita em baixo nível de
arquivos, mas não suportam trabalhar com partições de discos rígidos, está
o Hex Workshop. trabalha com dados nativos inclusive
e)
OllyDbg, WinDbg, IDA e OctEditor conseguem também monitorar o
boot do sistema operacional. OllyDbg é user-mode.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo
Questão 03 - FUNIVERSA - 2012 - PC-DF - Perito Criminal - Informática Diferença entre
Questão 03 - FUNIVERSA - 2012 - PC-DF - Perito Criminal - Informática
Diferença entre debugger e disassembler:
Debuggers são programas que analisam, depuram e testam aplicações. Sua principal
utilidade é na identificação e tratamento de erros. É possível rodar linha por linha do
código e analisar a mudança das variáveis e do comportamento do código. Os
debuggers para binários precisam ter um disassembler embutido para decodificar as
instruções. Ou seja, transformar o código-objeto em linguagem assembly.
Disassembler é um programa que consegue transformar linguagem de máquina para
a linguagem assembly, transcrevendo as instruções enviadas ao processador para os
seus mnemônicos em assembly (asm).
O OllyDbg é um dos mais poderosos debuggers (incluindo um disassembler)
disponíveis no mercado, além de ser gratuito, e opera em User-Mode apenas.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo
   
 

Em muitos casos, é desejável criar softwares com proteção contra reversão de código, ou seja, desenvolver programas que apliquem técnicas antiengenharia-reversa. Assinale a alternativa que apresenta somente exemplos dessas técnicas.

a)

transformações de dados, confusão de registradores, técnicas ativas

de antidebugging.

b)

ofuscação de código, eliminação de informação simbólica, uso de

árvores transversais.

c)

transformações no controle de fluxo, transformações de dados,

ofuscação e encriptação de código.

d)

encriptação de código, bloqueio de acesso à memória, confusão de

disassemblers.

e)

varredura linear recursiva, técnicas ativas de antidebugging,

transformações no controle de fluxo.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo
Questão 04 - FUNIVERSA - 2012 - PC-DF - Perito Criminal - Informática Em muitos
Questão 04 - FUNIVERSA - 2012 - PC-DF - Perito Criminal - Informática
Em muitos casos, é desejável criar softwares com proteção contra reversão
de código, ou seja, desenvolver programas que apliquem técnicas
antiengenharia-reversa. Assinale a alternativa que apresenta somente
exemplos dessas técnicas.
a)
transformações de dados, confusão de registradores, técnicas ativas
de antidebugging.
b)
ofuscação de código, eliminação de informação simbólica, uso de
árvores transversais.
c) transformações no controle de fluxo, transformações de dados,
ofuscação e encriptação de código.
d)
encriptação de código, bloqueio de acesso à memória, confusão de
disassemblers.
e)
varredura linear recursiva, técnicas ativas de antidebugging,
transformações no controle de fluxo.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 05 - FEPESE - 2010 - SEFAZ-SC - Auditor Fiscal da Receita Estadual -

Parte III - Tecnologia da Informação

 

Identifique as alternativas corretas a respeito de engenharia reversa.

 

1.

Descompiladores são usados para obter o código fonte de um software a

partir de seu código binário.

2.

Ofuscadores de código efetuam a cifragem de códigos binários de

programas com o intuito de impedir a sua descompilação.

3.

Através de técnicas de engenharia reversa, é possível obter diagramas

UML de um programa a partir de seu código fonte.

4.

Descompilação de código e esteganografia são duas técnicas

frequentemente usadas para realizar a engenharia reversa de sistemas

computacionais.

Assinale a alternativa que indica todas as afirmativas corretas.

 

a) São corretas apenas as afirmativas 1 e 3.

b) São corretas apenas as afirmativas 1 e 4.

c) São corretas apenas as afirmativas 2 e 3.

d) São corretas apenas as afirmativas 1, 2 e 4.

e) São corretas apenas as afirmativas 2, 3 e 4.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 05 - FEPESE - 2010 - SEFAZ-SC - Auditor Fiscal da Receita Estadual -

Parte III - Tecnologia da Informação

 
 

Identifique as alternativas corretas a respeito de engenharia reversa.

 

1.

Descompiladores são usados para obter o código fonte de um software a

partir de seu código binário.

 

2.

Ofuscadores de código efetuam a cifragem de códigos binários de

programas com o intuito de impedir a sua descompilação.

 

3.

Através de técnicas de engenharia reversa, é possível obter diagramas

UML de um programa a partir de seu código fonte.

 

4.

Descompilação de código e esteganografia são duas técnicas

 

frequentemente usadas para realizar a engenharia reversa de sistemas

computacionais.

 

Assinale a alternativa que indica todas as afirmativas corretas. a) São corretas apenas as afirmativas 1 e 3.

 
 

b) São corretas apenas as afirmativas 1 e 4.

 

c) São corretas apenas as afirmativas 2 e 3.

d) São corretas apenas as afirmativas 1, 2 e 4.

e) São corretas apenas as afirmativas 2, 3 e 4.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 05 - FEPESE - 2010 - SEFAZ-SC - Auditor Fiscal da Receita Estadual -

Parte III - Tecnologia da Informação

1 - OK

2 - Os ofuscadores cifram o código fonte

3 - OK. É o que fazem programas como o Together, Power Architect, etc.

4 - Esteganografia (do grego "escrita escondida") é o estudo e uso das

técnicas para ocultar a existência de uma mensagem dentro de outra. Em outras palavras, esteganografia é o ramo particular da criptologiaque consiste em fazer com que uma forma escrita seja camuflada em outra a fim de mascarar o seu verdadeiro sentido.

É importante frisar a diferença entre criptografia e esteganografia. Enquanto

a primeira oculta o significado da mensagem, a segunda oculta a existência

da mensagem.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Gabarito

1. CERTO

2. A

3. A

4. C

5. A

Questões para Estudo

Questão 01

A engenharia reversa pode ser feita através de várias

metodologias de análises, entre elas a análise estatística

e probabilística.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 01

A engenharia reversa pode ser feita através de várias

metodologias de análises, entre elas a análise estatística

e probabilística.

Certo

Errado

A engenharia reversa pode ser feita através das análises OffLine ou análise OnLine, também podem ser chamadas respectivamente de estática e dinâmica.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 02

Debuggers são ferramentas utilizadas na análise dinâmica, enquanto disassemblers são utilizados na análise estática.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 02

Debuggers são ferramentas utilizadas na análise dinâmica, enquanto disassemblers são utilizados na análise estática.

Certo

Errado

Debuggers = análise dinâmica ou Online - avaliam o comportamento Disassemblers = análise estática ou Offline - avaliam o código.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 03

Ferramentas disassembler convertem o código binário em uma representação em assembler.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 03

Ferramentas disassemblers convertem o código binário em uma representação textual em assembler.

Certo

Errado

Assembler é o compilador da linguagem Assembly

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 04

ACPU lê o código de máquina, que nada mais é do que seqüências de bits que contêm uma lista de instruções para a CPU executar. Linguagem Assembly é simplesmente uma representação textual destes bits, que são nominados apenas para que sejam legíveis.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 04

A CPU lê o código de máquina, que nada mais é do que seqüências de bits que contêm uma lista de instruções para a CPU executar. Linguagem Assembly é simplesmente uma representação textual destes bits, que são nominados apenas para que sejam legíveis.

Certo

Errado

Código de máquina e a linguagem Assembly são duas formas de representar a mesma informação. Em vez de números hexadecimais enigmáticos podemos olhar a instrução textual sendo nomes como MOV (Move), XCHG (Exchange), e assim por diante.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 05

Alguns disassemblers funcionam tanto em user-mode quanto em kernel-mode.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 05

Alguns disassemblers funcionam tanto em user-mode quanto em kernel-mode.

Certo

Errado

Disassemblers são ferramentas de análise estática. Debuggers que avaliam o fluxo de informação de um sistema são as ferramentas que podem operar tanto em user-mode (com restrições de execução) quanto em kernel-mode (com acesso ilimitado ao sistema operacional)

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 06

É essencial que as ferramentas debuggers incluam a funcionalidade principal de um disassembler, que é de reverter o código binário para um código em linguagem de montagem.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 06

É essencial que as ferramentas debuggers incluam a funcionalidade principal de um disassembler, que é de reverter o código binário para um código em linguagem de montagem.

Certo

Errado

Algumas das principais funcionalidades de debuggers:

1. Poderosa Ferramenta Disassembler

2. Breakpoints de Software e Hardware

3. Visualização de Registro e Memória

4. Informações sobre processos

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 07

Algumas ferramentas realizadas para análise estática na engenharia reversa são IDA-PRO e ILDasm

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 07

Algumas ferramentas realizadas para análise estática na engenharia reversa são IDA-PRO e ILDasm

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 08

 
 

A

Linguagem

Assembly

possui

um

conjunto

de

instruções

comuns

para

todas

as

arquiteturas

de

computadores.

 

Certo

Errado

 

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 08

 
 

A

Linguagem

Assembly

possui

um

conjunto

de

instruções

comuns

para

todas

as

arquiteturas

de

computadores.

 

Certo

Errado

 

As instruções Assembly são específicas para cada arquitetura de processador, ex IA-32, Sparc, etc.

 

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 09

Enquanto debuggers que funcionam em Kernel mode possuem acesso ilimitado inclusive ao sistema operacional, debuggers user- mode possuem algumas restrições em suas execuções.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 09

Enquanto debuggers que funcionam em Kernel mode possuem acesso ilimitado inclusive ao sistema operacional, debuggers user-mode possuem algumas restrições em suas execuções.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 10

Ollydbg, Windbg, Ida Pro, SoftIce e Hex Workshop são exemplos de ferramentas quem possuem a principal finalidade serem do tipo debugger

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 10

Ollydbg, Windbg, Ida Pro, SoftIce e Hex Workshop são exemplos de ferramentas quem possuem a principal finalidade serem do tipo debugger

Certo

Errado

A principal finalidade do Hex é ser uma ferramenta para patching.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 11

A utilização de máquinas virtuais para depurar aplicações não é recomendada já que esta não irá representar o ambiente de hardware e software necessários.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 11

A utilização de máquinas virtuais para depurar aplicações não é recomendada já que esta não irá representar o ambiente de hardware e software necessários.

Certo

Errado

Máquinas virtuais podem simular inclusive outras arquiteturas, e são recomendadas a fim de que o ambiente original não seja afetado por testes.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 12

Disassemblers são ferramentas utilizadas no mercado para realizar engenharia reversa através da análise estática e podem ser chamadas também de decompiladores.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 12

Disassemblers são ferramentas utilizadas no mercado para realizar engenharia reversa através da análise estática e podem ser chamadas também de decompiladores.

Certo

Errado

Decompilador é diferente de disassembler.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 13

Decompiladores diferem de disassemblers pelo fato do primeiro tentar reverter o código para uma linguagem de mais alto nível do que a linguagem revertida pelos disassemblers.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 13

Decompiladores diferem de disassemblers pelo fato do primeiro tentar reverter o código para uma linguagem de mais alto nível do que a linguagem revertida pelos disassemblers.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 14

Algumas

ferramentas

decompiladoras

existentes

no

mercado são JAD, DCC, Winobj e Andromeda.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 14

 
 

Algumas

ferramentas

decompiladoras

existentes

no

mercado são JAD, DCC, Winobj e Andromeda.

 

Certo

Errado

WinObj é ferramenta de monitoração do sistema.

 

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 15

O conjunto de técnicas que visam eliminar informações simbólicas para que estas deixem de fazer sentido no caso de uma engenharia reversa são chamadas de Ofuscação de Código.

Certo

Errado

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Questão 15

O conjunto de técnicas que visam eliminar informações simbólicas para que estas deixem de fazer sentido no caso de uma engenharia reversa são chamadas de Ofuscação de Código.

Certo

Errado

Ofuscação de código é o conjunto de técnicas que altera a estrutura do código, ocorre após a compilação. A técnica que elimina informação textual (antes da compilação) é chamada de Eliminação de Informação Simbólica.

Lúcio Camilo

Lúcio Camilo
Lúcio Camilo

Gabarito

1- ERRADO

6- CERTO

11- ERRADO

2- CERTO

7- CERTO

12- ERRADO

3- ERRADO

8- ERRADO

13- CERTO

4- CERTO

9- CERTO

14- ERRADO

5- ERRADO

10- ERRADO

15- ERRADO