REC Studio 4 – Portuguese

REC Studio 4 – Reverse Engineering Compiler

REC Studio é um decompiler interativo.

Ele lê um  arquivo de Windows, Linux, Mac OS X ou executável bruto e tenta produzir uma representação de C do código e dados usados ​​para criar o arquivo executável.
Ele foi projetado para ler arquivos produzidos para muitos alvos diferentes, e foi compilado em vários sistemas host.

REC Studio 4 é uma reescrita completa do decompiler original REC. Ele usa técnicas de análise mais poderosas, como o Single Static Assignment parcial (SSA), permite carregar arquivos Mac OS X e suporta binários de 32 e 64 bits.
Embora ainda em desenvolvimento, atingiu um estágio que o torna mais útil do que o antigo Rec Studio 2.

As páginas do Rec Studio 2 estão aqui.

Características

Como mencionado, Rec Studio 4 ainda está em desenvolvimento. A maioria dos recursos independentes de destino foram concluídos, tais como:

  • Multihost: Rec Studio é executado no Windows XP / Vista / 7, Ubuntu Linux, Mac OS X.
  • Suporte de informações simbólicas usando Dwarf 2 e reconhecimento parcial do formato PDB da Microsoft.
  • C ++ é parcialmente reconhecido: nomes “mangled” gerados pelo gcc são corrigidos, bem como a herança descrita em dwarf2 é homenageada. No entanto, C ++ é uma linguagem muito ampla e difícil, por isso alguns recursos como modelos provavelmente não serão suportados.
  • Tipos e definições de protótipo de função podem ser especificados em arquivos de texto. Algumas APIs padrão do Posix e do Windows já são fornecidas no pacote Rec Studio.
  • A interatividade é suportada, limitada à definição de seções, rótulos e pontos de entrada de função. Será necessário aprimorá-lo para suportar a definição de tipos e parâmetros de função no programa.

Esta tabela mostra os recursos específicos de destino que foram implementados até agora:

Características x86 (ia32) x86_64 Mips PowerPC mc68k ARM
Disassembler Concluído Concluído Concluído Concluído Concluído Planejado
PE COFF loader Concluído Concluído n/a n/a n/a n/a
ELF loader Concluído Concluído Concluído Concluído Concluído Planejado
COFF loader Concluído n/a n/a n/a Concluído n/a
Mac OS X loader Concluído Concluído n/a Planejado n/a Planejado
Dwarf2 symbolic information Concluído Concluído Concluído Concluído n/a Planejado
COFF symbolic information Planejado n/a n/a n/a Planejado n/a
Calling conventions Em andamento Em andamento Em andamento Planejado Planejado Planejado
32 and 64 bits Em andamento Em andamento n/a n/a n/a n/a
Floating-point Planejado Planejado n/a n/a n/a n/a
Windows Debugger Em andamento Planejado n/a n/a n/a n/a
Gdb Debugger Em andamento Em andamento n/a n/a n/a n/a

As fontes REC não estão no domínio público.

Embora REC pode ler Win32 executável (aka PE) arquivos produzidos pelo Visual C ++ ou Visual Basic 5, há limitações na saída produzida. Rec irá tentar utilizar qualquer informação está presente na tabela de símbolos .exe. Se o arquivo .exe foi compilado sem informações de depuração, se um arquivo de base de dados de programa (.PDB) ou Codeview (C7) formato foi usado, ou se a opção de otimização do compilador foi habilitado, a saída produzida não será muito boa. Além disso, os arquivos executáveis ​​do Visual Basic 5 são uma mistura de código de sub-rotina e dados de formulário. É quase impossível para o REC determinar qual é qual. A única opção é usar um arquivo .cmd e especificar manualmente qual área é código e qual área é dados.

Em prática, apenas arquivos executáveis ​​C produzem saídas decompiladas significativas.

Referências

Vários outros descompiladores estão disponíveis de várias fontes. Veja a minha página de engenharia reversa para uma lista.

Um pouco surpreendentemente, a arquitetura interna de um decompiler é muito semelhante à de um compilador. Literatura de alta qualidade existe para ambos. A página Design Notes tem informações sobre os problemas que um escritor decompilador enfrenta ao tentar descompilar programas ligeiramente mais complexos do que testes de unidade simples.
A página de descompilação tem links e documentação relacionada a descompiladores em geral.

A tese de Phillips de Mike van Emmerik avançou significativamente o campo da descompilação, delineando soluções para problemas fundamentais na descompilação de programas binários.

Técnicas de Compilação Reversa de Cristina Cifuentes A tese de doutorado descreve em detalhes a teoria ea implementação do decompilador de dcc para programas 8086 DOS.

A página Wotsit tem links para as especificações de formatos de arquivo de objeto como COFF e ELF.

Alguns conceitos relacionados à análise de código são abordados nas páginas do Reference Debugger.

Outros livros fundamentais que eu usei durante o desenvolvimento são:

  • “Compiladores – Princípios, Técnicas e Ferramentas”, Aho, Sethi, Ullman, 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
  • “Advanced Compiler Design & Implementação”, Steven Muchnick, 1997 Morgan Kaufmann Publishers, ISBN 1-55860-320-4.
  • “Como funcionam os depuradores – Algoritmos, Estruturas de Dados e Arquitetura”, Jonathan Rosemberg, 1996 John Wiley e Sons, ISBN 0-471-14966-7.

Os desmontadores utilizados em REC foram retirados de várias fontes. O arquivo de copyright na distribuição tem uma lista de créditos para cada um dos desmontadores usados ​​em REC. O resto do código foi escrito por mim mesmo durante os últimos 25 anos. Vou continuar a melhorar REC no meu tempo livre, mas não posso garantir que consiga corrigir bugs ou adicionar novos recursos, processadores ou hosts.

Aviso Legal

Há muita discussão sobre a legalidade da descompilação. As ferramentas do Decompiler estiveram disponíveis para uma variedade de plataformas por muito tempo. Decompilers, juntamente com outras ferramentas como depuradores, editores binários, etc desmontadores só devem ser usado quando o proprietário de um programa tem o direito legal de fazer  engenharia reversa do programa.

Foi estabelecido pelos tribunais dos Estados Unidos e de outros países que é legal usar descompiladores sob a cláusula de uso justo da lei de direitos autorais.

Para saber quando é legal usar um decompiler, você deve ler o texto dos seguintes casos:

Leia também uma discussão sobre a legalidade de usar um emulador para executar um programa binário em um host diferente.

Backer Street Software não suporta o uso de ferramentas de engenharia reversa para fins ilegais.


Copyright © 1997 – 2015 Backer Street Software – All rights reserved.


CG’s Home Page – Original text

Leave a Reply

Your email address will not be published. Required fields are marked *