REC studio 4 – Reverse Engineering compilateur


Original: http://www.backerstreet.com/rec/rec.htm

 

REC Studio est un décompilateur interactive.

Il lit un Windows, Linux, Mac OS X ou un fichier exécutable brut, et tente de produire une représentation de C-comme du code et des données utilisées pour construire le fichier exécutable.
Il a été conçu pour lire les fichiers produits pour de nombreuses cibles différentes, et il a été compilé sur plusieurs systèmes hôtes.

REC studio 4 est une réécriture complète de la decompiler REC originale. Il utilise des techniques d’analyse les plus puissants tels que partielle affectation statique unique (SSA), permet le chargement de fichiers de Mac OS X et prend en charge 32 et 64 bits binaires.
Bien que toujours en développement, il a atteint un stade qui le rend plus utile que l’ancien Rec Studio 2.
Rec Studio 2 pages sont ici.

 

traits

Comme mentionné, Rec studio 4 est encore en développement. La plupart des fonctions indépendantes cibles ont été réalisées, telles que:

  • Multihost: Rec Studio fonctionne sur Windows XP/Vista/7, Ubuntu Linux, Mac OS X.
  • Support de l’information symbolique utilisant nain 2 et la reconnaissance partielle de l’APB le format de Microsoft.
  • C + + est partiellement reconnu: noms mutilés générées par gcc sont demangled, ainsi que l’héritage décrit dans DWARF2 est honoré. Toutefois, C + + est un langage très large et difficile, de sorte que certaines caractéristiques comme modèles ne sera probablement pas toujours pris en charge.
  • Types et définitions des prototypes de fonction peuvent être spécifiés dans des fichiers texte. Certaines API Posix et Windows standard sont déjà prévues dans le paquet Rec Studio.

L’interactivité est supportée, limité à la définition des sections, les étiquettes et les points d’entrée de la fonction. Devra améliorer pour soutenir la définition en cours de programme des types et des paramètres de la fonction.

Ce tableau présente les caractéristiques spécifiques de la cible qui ont été mises en œuvre à ce jour:

Fonction

x86 (ia32)

x86_64

Mips

Power PC

mc68k

ARM

Disassembler

Fait

Fait

Fait

Fait

Fait

prévues

PE COFF chargeur

Fait

Fait

n/a

n/a

n/a

n/a

ELF chargeur

Fait

Fait

Fait

Fait

Fait

prévues

COFF chargeur

Fait

n/a

n/a

n/a

Fait

n/a

Mac OS X chargeur

Fait

Fait

n/a

prévues

n/a

prévues

Dwarf2 Informations symboliques

Fait

Fait

Fait

Fait

n/a

prévues

COFF Informations symboliques

prévues

n/a

n/a

n/a

prévues

n/a

Conventions d’appel

En cours

En cours

En cours

prévues

prévues

prévues

32 and 64 bits

En cours

En cours

n/a

n/a

n/a

n/a

Virgule flottante

prévues

prévues

n/a

n/a

n/a

n/a

Débogueur Windows

En cours

prévues

n/a

n/a

n/a

n/a

Débogueur gdb

En cours

En cours

n/a

n/a

n/a

n/a

Sources REC ne sont pas dans le domaine public.

Bien REC peut lire exécutable Win32 (aka PE) les fichiers produits par Visual C + + ou Visual Basic 5, il ya des limites à la sortie produites. REC va essayer d’utiliser toutes les informations est présent dans le fichier EXE table de symbole.. Si le fichier EXE. Été compilé sans informations de débogage, si un fichier programme de base de données (. PDB) ou Codeview (C7) format a été utilisé, ou si l’option d’optimisation du compilateur a été activée, la sortie produite ne sera pas très bon. En outre, 5 fichiers exécutables Visual Basic sont un mélange de code de sous-programmes et données de formulaire. Il est presque impossible pour REC pour déterminer qui est qui. La seule option est d’utiliser un fichier cmd. Et spécifier manuellement la zone est du code et qui est la zone de données.

Dans la pratique, seuls les fichiers exécutables C produisent une sortie décompilé significative.

références

Plusieurs autres decompilers sont disponibles à partir de diverses sources. Regardez ma page d’ingénierie inverse pour une liste.

De façon assez surprenante, l’architecture interne d’un décompileur est très semblable à celle d’un compilateur. Existe littérature de haute qualité pour les deux. La page Design Notes contient des informations sur les problèmes que l’écrivain decompiler face en essayant de décompiler programmes un peu plus complexes que les tests unitaires simples.
La page de décompilation a des liens et des documents relatifs à decompilers en général.

La thèse de Mike van Emmerik avancé de manière significative le domaine de la décompilation en exposant des solutions aux problèmes fondamentaux de la décompilation des programmes binaires.

N º Techniques de Compilation thèse de Cristina Cifuentes décrit en détail la théorie et la mise en œuvre de la decompiler DCC pour 8086 des programmes DOS.

La page de Wotsit des liens vers les spécifications des formats de fichiers objets COFF et ELF comme.

Certains concepts liés à l’analyse de code sont couverts dans les pages de référence du débogueur.

D’autres livres fondamentaux que j’ai utilisé pendant le développement sont:

  • „Les compilateurs – Principes, techniques et outils“, Aho, Sethi, Ullman, 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
  • „Advanced Compiler Design et mise en œuvre“, Steven Muchnick, 1997 Morgan Kaufmann Publishers, ISBN 1-55860-320-4.
  • „Comment débogueurs travaillent – Algorithmique, structures de données, et Architecture“, Jonathan Rosemberg, 1996 John Wiley and Sons, ISBN 0-471-14966-7.

Les désassembleurs utilisés dans REC ont été prises à partir de diverses sources. Le copyrite de fichier dans la distribution a une liste de crédits pour chacun des désassembleurs utilisés dans REC. Le reste du code a été écrit par moi-même au cours des 25 dernières années. Je vais continuer à améliorer REC dans mon temps libre, mais je ne peux pas garantir que je peux corriger des bugs ou ajouter de nouvelles fonctionnalités, des transformateurs, ou des hôtes.

désistement

Il ya beaucoup de discussion sur la légalité de la décompilation. Outils de Decompiler ont été disponibles pour une variété de plates-formes pour une longue période. Decompilers, ainsi que d’autres outils comme les débogueurs, éditeurs binaires, désassembleurs etc ne doivent être utilisés lorsque le propriétaire d’un programme a le droit de désosser le programme.

Il a été établi par les tribunaux américains et d’autres pays qu’il est légal d’utiliser decompilers vertu de la clause de l’utilisation équitable du droit d’auteur.

Pour savoir quand il est légal d’utiliser un décompilateur, vous devriez lire le texte des cas suivants:

  • Sega Enterprises LTD c Accolade, Inc.
  • Atari Games Corp v Nintendo of America, Inc.

A lire également une discussion sur la légalité de l’utilisation d’un émulateur pour exécuter un programme binaire sur un hôte différent.

Backer Street Software ne prend pas en charge l’utilisation d’outils d’ingénierie inverse à des fins illégales.

Copyright © 1997 – 2012 du logiciel Backer Street – Tous droits réservés.

histoire:

9 Mars 2011 Version 4.0 Beta: Réécriture complète de la decompiler pour soutenir les architectures plus modernes (fichiers macho, x86_64).
2 Juillet version 2007 2.2: décompilation fixe des binaires premières via cmd.. Partiellement mise en œuvre registre propagation constante. De nombreuses erreurs de 68k fixes.
6 mai 2007 Version 2.1: Ajout d’option de retour de lot + à RecStudio; utiliser NDISASM pour i386; une meilleure isolation des données d’importation pour les fichiers binaires de Windows
20 septembre 2005 Version 2.0d: Plus de corrections de bugs pour 68k
6 septembre 2005 Version 2.0c: Soutien pour Linux o fichiers et un support amélioré pour 68k.
15 août 2005 Version 2.0b: Version de maintenance. Support des binaires Watcom-compilés et les chaînes étendues
1 août 2005 Version 2.0a: Version de maintenance. Correction de plantages, amélioration de la qualité avec les exécutables Windows
30 mai 2005 Version 2.0: Windows GUI et la décompilation interactive
19 septembre 2000 Version 1.6: Ajout du support pour SPARC.
16 mars 1999 Version 1.5d: détection restaurée de l’interrupteur (). Ajout du support pour big-endian MIPS.
6 mars 1999 Version 1.5: Support pour info import / export des fichiers Win95; remplacés désassembleurs GNU avec la source freeware; de nombreux accidents fixes
22 novembre 1998 Version 1.4a: boucle sans fin fixe lorsque la décompilation des fichiers Win95; fichiers de prototype de Windows ajoutés
15 novembre 1998 Version 1.4: la capacité du navigateur Ajout en mode interactif, et la génération de pages HTML
30 juillet 1998
Version 1.3b: Entretien: fixe les accidents et les divers problèmes dans 68k.
15 février 1998 Version 1.3: Ajout Motorola 68000 et objectifs PowerPC.
7 décembre 1997 Version 1.2: fixe l’interface utilisateur de PC. Maintenant, nous pouvons charger 16 bits exécutables DOS. Plus de corrections de bugs.
26 octobre 1997 Version 1.1: support multi-cible (386 + R3000), le chargement de ELF et les fichiers PE, plusieurs bugs corrigés.
6 octobre 1997 porté sur Windows en mode console (recr4kpc.zip) et SunOS (recr4ks4.tar.gz)
20 septembre 1997 Créée pour faire recr4kl.zip disponible.

Comments are closed.