Você está na página 1de 3

23/05/2019 Análise de código (engenharia reversa) - Forense

Pesquisar o site

Home Ferramentas >


Ferramentas
Análise de código
Análise de código
(engenharia reversa)
Autopsy Forensic Browser
(engenharia reversa)
Forense de Memória
Linux
LiveCD
Mac OS X Programas de computador
Recuperação de Evidências
(TSK)
Computadores são programados e realizam trabalho a partir dos
programas de computador. Os programas de computador, por sua
Forense Computacional
vez, têm suas instruções codificadas de duas formas: na forma de
Legislação Relacionada executáveis binário e na forma de scripts.
Processo de Investigação
Sitemap
Os scripts são sequências de instruções, codificadas em
linguagem específica, na maioria dos casos na forma de um pseudo
inglês, que são interpretados por outro programa de computador já
em execução, afim de realizar operações lógico-matemáticas ou
comunicação com os dispositivos periféricos.

Os executáveis são sequências de instruções, codificados de


forma numérica, capazes de serem executados diretamente pelo
hardware ou por outros programas já em execução. Contudo,
programas numericamente codificados são de difícil entendimento
para serem humanos, em função disto foram criados os
compiladores, programas capazes de transformar instruções
codificadas em linguagem mais próxima da linguagem natural (como
os scripts) em instruções numéricas de forma que estas últimas
possam ser diretamente interpretadas pelo computador.

Do ponto de vista da computação forense, analisar um programa


de computador é útil sobretudo no intuito de verificar se o programa
de computador foi construído de forma a realizar o trabalho
esperado e em caso de haver comportamento indesejado do
programa, se este é decorrente de erros de programação ou da
inserção de código malicioso. Para analisar scripts basta que estes
sejam abertos em um editor de textos comum, já os executáveis são
mais facilmente analisados utilizando-se um analisador de código.

Analisadores de código
Analisadores de código que realizam engenharia reversa,
também conhecidos como disassemblers, são programas de
computador responsáveis por traduzir um programa executável,
codificado em instruções numéricas, em linguagem de montagem
(assembly) ou na linguagem de origem do programa (geralmente
uma forma de pseudo inglês). Eles realizam o trabalho inverso do
compilador, afim de estudar com mais clareza o comportamento do
programa.

A análise do código de um programa que roda em um


computador é de grande importância para a comprovação de
incidentes, exemplos disto foram alguns casos conhecidos como
"Salami slicing", onde décimos de centavos, oriundos de
arredondamentos de operações bancárias, eram transferidos para
https://sites.google.com/a/cristiantm.com.br/forense/ferramentas/anlise-de-cdigo 1/3
23/05/2019 Análise de código (engenharia reversa) - Forense

as contas dos programadores que implementaram os programas


que realizavam as transações. Dado o grande volume de transações
em poucos dias os criminosos acumulam um grande volume de
dinheiro.

A forma mais básica de um analisador de código são os


analisadores que convertem de instruções numéricas para
mnemônicos, instruções próximas da linguagem de máquina, porém
mais amigáveis a um ser humano.
Endereço OPcode Operandos

7C90EBAF pushfd
7C90EBB0 sub esp, 2D0h
7C90EBB6 mov dword ptr [ebp+FFFFFDDCh], eax
7C90EBBC mov dword ptr [ebp+FFFFFDD8h], ecx
7C90EBC2 mov eax, dword ptr [ebp+8]
7C90EBC5 mov ecx, dword ptr [ebp+4]

Exemplo de instruções em linguagem de máquina para arquitetura Intel.

Outra forma de decodificar as instruções numéricas de um programa


de computador é para a própria linguagem de origem do programa,
como por exemplo linguagens como Java, C, C++, Ada, Fortran,
Smalltalk etc.

public class Circle extends java.lang.Object{


public class Circle extends java.lang.Object{
public java.lang.String uom;

private int x;

private int y;

private int r;

public Circle();
Code:
0: aload_0
1: invokespecial #1; //Method
java/lang/Object."":()
4: aload_0
5: ldc #2; //String Centimeter
7: putfield #3; //Field
uom:Ljava/lang/String;
10: aload_0
11: iconst_0
12: putfield #4; //Field x:I
15: aload_0
16: iconst_0
17: putfield #5; //Field y:I
20: aload_0
21: iconst_1
22: putfield #6; //Field r:I
25: return

public void setRadius(int);


Code:
0: aload_0
1: iload_1
2: putfield #6; //Field r:I
5: return

Um exemplo de uma classe Circle, “disassemblada” pelo programa javap que


acompanha a distribuição do standard do Java (JSE).

Uma lista de analisadores de código pode ser encontrada em:


http://www.woodmann.com/crackz/Tools.htm
https://sites.google.com/a/cristiantm.com.br/forense/ferramentas/anlise-de-cdigo 2/3
23/05/2019 Análise de código (engenharia reversa) - Forense

Conclusão
Analisadores de código são ferramentas úteis na extração de
informação embutida nos programas de computadores, informações
estas que podem ser, desde o funcionamento do programa, até
senhas ou algoritmos fechados na compilação do programa.

Referências
[1] "Disassembler", disponível em
http://en.wikipedia.org/wiki/Disassembler, acessado em março de
2010.

[2] "Java Decompiler HOW-TO", disponível em


http://www.faqs.org/docs/Linux-HOWTO/Java-Decompiler-
HOWTO.html, acessado em março de 2010.

[3] "C++ Reverse Disassembly", disponível em


http://www.codeproject.com/KB/cpp/reversedisasm.aspx, acessado
em março de 2010.

[4] "Disassembling Java Bytecode Class Files", disponível em


http://www.herongyang.com/Java-Tools/javap-Disassemble-Java-
Bytecode-Class-Files.html, acessado em março de 2010.

[5] "Disassemblers/Decompilers list I promised to get to.." ,


disponível em
http://jasonhaley.com/blog/post/2005/09/25/DisassemblersDecompilers
list-I-promised-to-get-to.aspx, acessado em março de 2010.

[6] "Application-specific Decompilers", disponível em


http://www.itee.uq.edu.au/~csmweb/decompilation/application.html,
acessado em março de 2010.

[7] "Reverse Engineering Tools", disponível em


http://www.woodmann.com/crackz/Tools.htm, acessado em março
de 2010.

Comentários

Você não tem permissão para adicionar comentários.

Fazer login | Atividade recente no site | Denunciar abuso | Imprimir página | Tecnologia Google Sites

https://sites.google.com/a/cristiantm.com.br/forense/ferramentas/anlise-de-cdigo 3/3