Author: backerstreet.com
REC 2.1 - Competente de Engenharia Reversa
REC é um compilador portátil de engenharia reversa ou descompilador.
Ele lê um arquivo executável e tenta produzir uma representação semelhante ao C e o código usado para construir o arquivo executável.
RecStudio oferece uma interface de usuário moderna para o modo interativo do REC.
|
|
Última atualização
20 de setembro de 2005 |
RecStudio |
---|
Após um período de 4 anos no domínio das interfaces gráficas de usuário, finalmente volto ao trabalho no REC.
A versão 2 apresenta o RecStudio, uma nova interface de usuário para descompilação interativa.
Inicialmente, a nova interface do usuário só está disponível em sistemas Windows. Use o Wine ou outra biblioteca de portar para executar o REC 2 no Linux.
Um Linux, Solaris e MacOS X originais serão inicialmente limitados à descompilação por lotes através de arquivos de projeto.
![]()
Veja a página de versão 2 para uma visita a esta nova versão REC.
Recursos das versões 1.x |
---|
Estes são alguns dos recursos do REC:As fontes REC não são no domínio público.
- Multitarget: REC pode descompilar programas 386, 68k, PowerPC e MIPS R3000.
- Multiformato: REC reconhece os seguintes formatos de arquivo:
- ELF (System V Rel. 4, por exemplo, Linux, Solaris, etc.)
- COFF (System V Rel. 3.x, por exemplo SCO)
- PE (Win32 .EXE e .DLL para Microsoft Windows 95 e NT)
- AOUT (derivativos BSD, por exemplo SunOS 4.x)
- Playstation PS-X (somente MIPS)
- Dados binários em bruto (via arquivos .cmd)
- Multihost: REC está disponível para Linux 3.0 (i386), Windows 95 e SunOS 4.1.4.
- Apoia informações simbólicas de alto nível em COFF, ELF + STAB, AOUT + STAB.
- Interação escalável do usuário: do modo totalmente lote para o modo interativo do navegador de tela inteira.
- O modo de servidor HTTP permite usar um navegador HTML como interface de usuário
Embora o REC possa ler os arquivos executáveis Win32 (aka PE) produzidos pelo Visual C ++ ou Visual Basic 5, existem limitações na produção produzida. O REC tentará usar qualquer informação presente na tabela de símbolos .EXE. Se o arquivo .EXE foi compilado sem informações de depuração, se um formato da base de dados do programa (.PDB) ou Codeview (C7) fosse usado, ou se a opção de otimização do compilador estiver habilitada, a saída produzida não será muito boa. Além disso, os arquivos executáveis do Visual Basic 5 são uma mistura do código Subroutine e dados Form. É quase impossível que a REC determine qual é qual. A única opção é usar um arquivo .cmd e especificar manualmente qual área é código e qual área é dados.
Na prática, apenas os arquivos executáveis C produzem saída descompilada significativa.
Eventualmente, implementarei um analisador de informação simbólica .PDB ou Codeview e um descompilador de recursos da janela. Até então, a única chance de obter uma saída simbólica de alta qualidade é descompilar os executáveis do Linux que foram compilados com o -gstabs opção, ou para fornecer informações simbólicas adicionais através do 'symbol:' e 'types:' diretivas de um arquivo de comando REC.
Referências |
---|
Vários outros descompiladores estão disponíveis em várias fontes. Olhe para mim página de engenharia reversa para uma lista.
Em vez disso, surpreendentemente, a arquitetura interna de um descompilador é muito semelhante à de um compilador. Existe literatura de alta qualidade para ambos.
A página descompilação possui links e documentação relacionada aos descompiladores em geral.Cristina Cifuentes' Técnicas de compilação reversa Tese de doutorado descreve detalhadamente a teoria e a implementação do dcompc de dccc para programas 8086 DOS.
A página de otimização descreve algumas das técnicas utilizadas pelos compiladores para otimizar o código do nível da máquina. Descompilar otimizado é mais difícil porque o descompilador deve "de otimizar" o arquivo de entrada.
A pagina Wotsit tem links para as especificações dos formatos de arquivo de objeto como COFF e ELF.
Outros livros fundamentais que usei durante o desenvolvimento são:
Os desmontadores utilizados no REC foram retirados de várias fontes. O arquivo copyrite 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 nos últimos 9 anos. Continuarei a melhorar REC no meu tempo livre, mas não posso garantir que consiga corrigir erros ou adicionar novos recursos, processadores ou hosts.
- "Compilers - Principles, Techniques and Tools", Aho, Sethi, Ullman, 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
- "Advanced Compiler Design & Implementation", Steven Muchnick, 1997 Morgan Kaufmann Publishers, ISBN 1-55860-320-4.
- "How debuggers work - Algorithms, Data Structures, and Architecture", Jonathan Rosemberg, 1996 John Wiley and Sons, ISBN 0-471-14966-7.
aviso Legal |
---|
Há muita discussão sobre a legalidade da descompilação. As ferramentas Decompiler estão disponíveis para uma variedade de plataformas há muito tempo. Decompilers, juntamente com outras ferramentas, como depuradores, editores binários, desmontadores, etc., só devem ser usados quando o proprietário de um programa tem o direito legal de engenharia reversa do programa.Foi estabelecido pelos tribunais dos EUA e outros países que é legal usar decompiladores sob a cláusula de uso justo da lei de direitos autorais.
Para descobrir quando é legal usar um descompilador, você deve ler o texto dos seguintes casos:
Além disso leia uma discussão sobre a legalidade de usar um emulador para executar um programa binário em um host diferente.
- Sega Enterprises LTD v. Accolade, Inc.
- Atari Games Corp. v. Nintendo of America, Inc.
O software Baker Street não suporta o uso de ferramentas de engenharia reversa para fins ilegais.
Copyright © 1997 - 2007 Backer Street Software - All rights reserved.
História:
6 de maio de 2007 Versão 2.1: Adicionado novamente + opção de lote para RecStudio; use Ndisasm para i386; melhor isolamento de dados de importação para binários do Windows 20 de setembro de 2005 Versão 2.0d: Mais correções de bugs para 68k 6 de setembro de 2005 Versão 2.0c: Suporte para arquivos Linux .o e suporte aprimorado para 68k 15 de agosto de 2005 Versão 2.0b: versão de manutenção. Suporte para binários compilados com Watcom e cordas amplas 1 de agosto de 2005 Versão 2.0a: versão de manutenção. Corrigido falhas, qualidade melhorada com executáveis do Windows 30 de maio de 2005 Versão 2.0: GUI do Windows e descompilação interativa 19 de setembro de 2000 Versão 1.6: Adicionado suporte para o SPARC. 16 de março de 1999 Versão 1.5d: Detecção restaurada do switch(). Adicionado suporte para MIPS de grande endian. 6 de março de 1999 Versão 1.5: Suporte para informações de importação / exportação em arquivos Win95; substituiu GNU desassemblers com fonte freeware; corrigiu muitos acidentes 22 de novembro de 1998 Versão 1.4a: Corrigido loop infinito ao descompilar arquivos Win95; adicionou arquivos de protótipo do Windows 15 de novembro de 1998 Versão 1.4: Adicionado capacidade do navegador no modo interativo e geração de página HTML 30 de julho de 1998Versão 1.3b: Manutenção: falhas fixas e vários problemas em 68k. 15 de fevereiro de 1998 Versão 1.3: Adicionado os destinos Motorola 68000 e PowerPC. 7 de dezembro de 1997 Versão 1.2: interface de usuário fixa do PC. Agora, podemos carregar executáveis do DOS de 16 bits. Mais correções de bugs. 26 de outubro de 1997 Versão 1.1: suporte multi-alvo (386 + R3000), carregamento de arquivos ELF e PE, vários erros corrigidos. 6 de outubro de 1997 Ligado ao Windows no modo console (recr4kpc.zip) e ao SunOS (recr4ks4.tar.gz) 20 de setembro de 1997 Criado para tornar disponível recr4kl.zip.